救命啊!救命啊!救命啊!

anaikh 2003-01-25 08:31:31
紧急求救:
如何才能新建、更改注册表?用什么代码能实现双击*.reg文件的效果?
...全文
41 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
anaikh 2003-01-30
  • 打赏
  • 举报
回复
请给出函数及其使用方法!谢谢!
rainsea 2003-01-26
  • 打赏
  • 举报
回复
转帖,给你完整原码sorry,注释少点
unit Unit1;

interface

uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls,Registry;

type
TForm1 = class(TForm)
Button1: TButton;
Button2: TButton;
Label1: TLabel;
Button3: TButton;
Button4: TButton;
Button5: TButton;
Button6: TButton;
Button7: TButton;
Button8: TButton;
Memo1: TMemo;
Button9: TButton;
Edit1: TEdit;
Label6: TLabel;
Button10: TButton;
Edit2: TEdit;
Edit3: TEdit;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure Button3Click(Sender: TObject);
procedure Button4Click(Sender: TObject);
procedure Button5Click(Sender: TObject);
procedure Button6Click(Sender: TObject);
procedure Button7Click(Sender: TObject);
procedure Button8Click(Sender: TObject);
procedure Button9Click(Sender: TObject);
procedure Button10Click(Sender: TObject);
procedure FormShow(Sender: TObject);

private
//function GetExePath;
{ Private declarations }
public
{ Public declarations }
end;

var
Form1: TForm1;
RegF:TRegistry;
regstr: tstrings;

implementation

{$R *.DFM}

procedure TForm1.Button1Click(Sender: TObject);
begin
RegF:=TRegistry.Create;
RegF.RootKey:=HKEY_LOCAL_MACHINE;
try
RegF.OpenKey('SOFTWARE\Microsoft\Windows\CurrentVersion\Run',True);
// RegF.WriteString('test',
// '"d:\haowork\player\test.exe"');
RegF.WriteString(application.Title,
application.ExeName);
if RegF.ValueExists(application.Title) then
showmessage('成功');
except
// ...
End;
RegF.CloseKey;
RegF.Free;
end;
/////////////////////////////////////////////////
//function GetExePath:String;
//var
// LastBackSlashPos,Index:Integer;
//begin
//Result:=Application.ExeName;
//for Index:=1 to length(Result)do
//if Result[Index]=′ι′then
//LastBackSlashPos:ΚIndex;
//{subtract1sothatthelastbackslashisnotincluded}
//Result[0]:Κchr(LastBackSlashPos-1);
//end;



procedure TForm1.Button2Click(Sender: TObject);
begin
label1.Caption:=Application.ExeName;
end;

procedure TForm1.Button3Click(Sender: TObject);
var
hDesktop :THandle;
begin
hDesktop := FindWindow('Progman', nil);
ShowWindow(hDesktop, SW_HIDE);
end;

procedure TForm1.Button4Click(Sender: TObject);
var
hDesktop :THandle;
begin
hDesktop := FindWindow('Progman', nil);
ShowWindow(hDesktop, SW_show);

end;

procedure TForm1.Button5Click(Sender: TObject);
begin
SystemParametersInfo(SPI_SCREENSAVERRUNNING, 1, nil, 0);
end;

procedure TForm1.Button6Click(Sender: TObject);
begin
SystemParametersInfo(SPI_SCREENSAVERRUNNING, 0, nil, 0);
end;

procedure TForm1.Button7Click(Sender: TObject);
begin
RegF:=TRegistry.Create;
RegF.RootKey:=HKEY_LOCAL_MACHINE;
try
RegF.OpenKey('SOFTWARE\Microsoft\Windows\CurrentVersion\Run',True);
if RegF.DeleteValue(application.Title)then
showmessage('成功');
except
// ...
End;
RegF.CloseKey;
RegF.Free;


end;

procedure TForm1.Button8Click(Sender: TObject);
var
i:integer;
begin
regstr:=TStringList.Create;
RegF:=TRegistry.Create;
RegF.RootKey:=HKEY_CURRENT_USER;
try
RegF.OpenKey('SOFTWARE\Microsoft\Windows\CurrentVersion\policies\system',True);
regf.GetValueNames(regstr);

for I := 0 to regstr.count - 1 do
memo1.Lines[i]:=regstr.Strings[i];

if RegF.DeleteValue('disableregistrytools')then
showmessage('成功');
except
// ...
End;
RegF.CloseKey;
RegF.Free;
end;

procedure TForm1.Button9Click(Sender: TObject);
begin
RegF:=TRegistry.Create;
RegF.RootKey:=HKEY_CURRENT_USER;
try
RegF.OpenKey('SOFTWARE\Microsoft\Windows\CurrentVersion\policies\system',True);
RegF.WriteInteger('disableregistrytools',1);
if RegF.ValueExists('disableregistrytools') then
showmessage('成功');



except
// ...
End;
RegF.CloseKey;
RegF.Free;
end;

procedure TForm1.Button10Click(Sender: TObject);
begin
if edit1.Text='vtxv' then begin
button1.Enabled:=true;
button2.Enabled:=true;
button3.Enabled:=true;
button4.Enabled:=true;
button5.Enabled:=true;
button6.Enabled:=true;
button7.Enabled:=true;
button8.Enabled:=true;
button9.Enabled:=true;
button10.Enabled:=true;
end
else
begin
showmessage('您无权使用此软件');
close;
end;

end;

procedure TForm1.FormShow(Sender: TObject);
begin
edit1.SetFocus;
end;

end.
rainsea 2003-01-26
  • 打赏
  • 举报
回复
Registry

看一下这个单元的内容和结构和相关的帮助,所有有关注册表的操作都在这里了;如果你还是不愿意使用这个单元,你可以使用win32 API函数。
johnmack 2003-01-26
  • 打赏
  • 举报
回复
不错!
xiaocuo_zrf 2003-01-25
  • 打赏
  • 举报
回复
SetSetProp()//设置集合属性
GetSetProp()//获取集合属性
SetStrProp()//设置字符属性
GetStrProp()//获取字符属性
SetOrdProp()//设置有序属性
GetOrdProp()//获取有序属性

xiaocuo_zrf 2003-01-25
  • 打赏
  • 举报
回复
uses
Registry, TypInfo;

procedure TForm1.FormCreate(Sender: TObject);
begin
with TRegistry.Create do try
RootKey := HKEY_CURRENT_USER;
if OpenKey('\Software\MySoft\Font', False) then begin
Font.Name := ReadString('Name');
Font.Size := StrToIntDef(ReadString('Size'), 0);
Font.Color := StringToColor(ReadString('Color'));
SetSetProp(Font, 'Style', ReadString('Style'));
CloseKey;
end;
finally
Free;
end;
end;

procedure TForm1.FormDestroy(Sender: TObject);
begin
with TRegistry.Create do try
RootKey := HKEY_CURRENT_USER;
if OpenKey('\Software\MySoft\Font', True) then begin
WriteString('Name', Font.Name);
WriteString('Size', IntToStr(Font.Size));
WriteString('Color', ColorToString(Font.Color));
WriteString('Style', GetSetProp(Font, 'Style'));
CloseKey;
end;
finally
Free;
end;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
if FontDialog1.Execute then Font.Assign(FontDialog1.Font);
end;

5,388

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 开发及应用
社区管理员
  • VCL组件开发及应用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧