//向注册表写入一个数据项目 function WriteRegStr(str:string):string; var reg:TRegistry; begin reg:=TRegistry.Create; reg.RootKey:=HKEY_LOCAL_MACHINE; reg.OpenKey('Software\test',false); reg.WriteString('regname',regvalue); reg.Free; end;//从注册表读出一个数据项目 function GetRegStr():string; var reg:TRegistry; begin reg:=TRegistry.Create; reg.RootKey:=HKEY_LOCAL_MACHINE; reg.OpenKey('Software\test',false); GetRegStr:=reg.ReadString('regname'); reg.Free; end;简单的读写。 那位大哥能给我讲一下不用记事本,直接生成注册表文件的方法?
这是lxpbuaa(桂枝香在故国晚秋)写的一段代码,可以使用,但是生成的文件里面都是乱码。而且前几行看的不是很懂。 procedure TForm1.Button1Click(Sender: TObject); var RootKey,phKey: hKey; KeyName,sKeyFileName: String; hToken: THandle; tkp: TOKEN_PRIVILEGES; ReturnLength: DWord; begin if OpenProcessToken(GetCurrentProcess, TOKEN_ADJUST_PRIVILEGES or TOKEN_ALL_ACCESS or TOKEN_QUERY, hToken) then begin LookupPrivilegeValuew(nil, 'SeBackupPrivilege', tkp.Privileges[0].Luid); tkp.PrivilegeCount := 1; tkp.Privileges[0].Attributes := SE_PRIVILEGE_ENABLED; AdjustTokenPrivileges(hToken, FALSE, tkp, 0, nil, ReturnLength); end; RootKey := HKEY_LOCAL_MACHINE; KeyName := 'software\myreg'; if RegOpenKeyEx(RootKey, PChar(KeyName), 0, KEY_ALL_ACCESS, phKey) = ERROR_SUCCESS then begin sKeyFileName := 'g:\myreg2'; if RegSaveKey(phKey, PChar(sKeyFileName), nil)= 0 then ShowMessage('导出成功') else ShowMessage('导出失败'); RegCloseKey(phKey); end; end;
不太明白你所说的,如果用程序来生成一个注册表文件是很简单的,不用把自己搞得那么糊涂 注册表文件是用一个书写标准的 比如win2000下第一行是版本号即如下: Windows Registry Editor Version 5.00如果只是生成一个注册表文件,你可以象写txt文件一样写一个文件然后存为.reg结尾。 如果用delphi写,更简单用TRegistryIniFile(TRegIniFile95/NT)只适用于类写就可以了! TRegistryIniFile怎么用就不用我说了吧,看help吧!
var F:TextFile; f1,f2,f3,f4,f5,s:string; begin assignFile(F,'D:\connreg.reg'); Rewrite(F); f1:='Windows Registry Editor Version 5.00'; f2:='[HKEY_LOCAL_MACHINE\SOFTWARE\reg]'; f3:='@=""'; f4:='"reg1"="'+GetRegStr()+'"'; f5:='"reg2"="'+GetReg()+'"'; s:=f1+#13+#13+f2+#13+f3+#13+f4+#13+f5; Writeln(F,s); closefile(F); end;这样就可以实现你说的,但是这种方法并不是很好。delphi自带一个导出注册表文件的方法。但是还不会用。所以想找人问一下。
使用TRegistry提供的SaveKey方法!!!
var reg : Tregistry; begin reg := Tregistry.Create; reg.Access:=KEY_ALL_ACCESS; reg.rootkey := HKEY_LOCAL_MACHINE; reg.OpenKey('software\myreg',false); reg.Savekey('software\myreg','D:\myreg1'); reg.CloseKey; end; 但是并不能导出注册表文件
保存类型为:所有文件(*.*)
function WriteRegStr(str:string):string;
var
reg:TRegistry;
begin
reg:=TRegistry.Create;
reg.RootKey:=HKEY_LOCAL_MACHINE;
reg.OpenKey('Software\test',false);
reg.WriteString('regname',regvalue);
reg.Free;
end;//从注册表读出一个数据项目
function GetRegStr():string;
var
reg:TRegistry;
begin
reg:=TRegistry.Create;
reg.RootKey:=HKEY_LOCAL_MACHINE;
reg.OpenKey('Software\test',false);
GetRegStr:=reg.ReadString('regname');
reg.Free;
end;简单的读写。
那位大哥能给我讲一下不用记事本,直接生成注册表文件的方法?
不过不同系统的.reg文件格式有点不同。
当然也可以自己写reg文件那样很复杂,需要区分不同操作系统
procedure TForm1.Button1Click(Sender: TObject);
var
RootKey,phKey: hKey;
KeyName,sKeyFileName: String;
hToken: THandle;
tkp: TOKEN_PRIVILEGES;
ReturnLength: DWord;
begin
if OpenProcessToken(GetCurrentProcess, TOKEN_ADJUST_PRIVILEGES or TOKEN_ALL_ACCESS or TOKEN_QUERY, hToken) then
begin
LookupPrivilegeValuew(nil, 'SeBackupPrivilege', tkp.Privileges[0].Luid);
tkp.PrivilegeCount := 1;
tkp.Privileges[0].Attributes := SE_PRIVILEGE_ENABLED;
AdjustTokenPrivileges(hToken, FALSE, tkp, 0, nil, ReturnLength);
end;
RootKey := HKEY_LOCAL_MACHINE;
KeyName := 'software\myreg';
if RegOpenKeyEx(RootKey, PChar(KeyName), 0, KEY_ALL_ACCESS, phKey) = ERROR_SUCCESS then
begin
sKeyFileName := 'g:\myreg2';
if RegSaveKey(phKey, PChar(sKeyFileName), nil)= 0 then
ShowMessage('导出成功')
else
ShowMessage('导出失败');
RegCloseKey(phKey);
end;
end;
注册表文件是用一个书写标准的
比如win2000下第一行是版本号即如下:
Windows Registry Editor Version 5.00如果只是生成一个注册表文件,你可以象写txt文件一样写一个文件然后存为.reg结尾。
如果用delphi写,更简单用TRegistryIniFile(TRegIniFile95/NT)只适用于类写就可以了!
TRegistryIniFile怎么用就不用我说了吧,看help吧!
F:TextFile;
f1,f2,f3,f4,f5,s:string;
begin
assignFile(F,'D:\connreg.reg');
Rewrite(F);
f1:='Windows Registry Editor Version 5.00';
f2:='[HKEY_LOCAL_MACHINE\SOFTWARE\reg]';
f3:='@=""';
f4:='"reg1"="'+GetRegStr()+'"';
f5:='"reg2"="'+GetReg()+'"';
s:=f1+#13+#13+f2+#13+f3+#13+f4+#13+f5;
Writeln(F,s);
closefile(F);
end;这样就可以实现你说的,但是这种方法并不是很好。delphi自带一个导出注册表文件的方法。但是还不会用。所以想找人问一下。
reg : Tregistry;
begin
reg := Tregistry.Create;
reg.Access:=KEY_ALL_ACCESS;
reg.rootkey := HKEY_LOCAL_MACHINE;
reg.OpenKey('software\myreg',false);
reg.Savekey('software\myreg','D:\myreg1');
reg.CloseKey;
end;
但是并不能导出注册表文件