我是在win2000 professional下编写的以下两段程序,但是保存的文件都是0字节,没有保存成功,请高手指教是什么原因procedure TForm1.BitBtn3Click(Sender: TObject);
var
RootKey,phKey: hKey;
KeyName,sKeyFileName: String;
FileName: pchar;
begin
RootKey := HKEY_LOCAL_MACHINE;
KeyName := 'software\myreg'; RegOpenKeyEx(RootKey, PChar(KeyName), 0, KEY_ALL_ACCESS, phKey); sKeyFileName := 'D:\myreg2'; StrPCopy(FileName,sKeyFileName); if RegSaveKey(phKey, FileName, nil)= 0 then
ShowMessage('导出成功')
else
ShowMessage('导出失败'); RegCloseKey(phKey);
end;procedure TForm1.BitBtn4Click(Sender: TObject);
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;
var
RootKey,phKey: hKey;
KeyName,sKeyFileName: String;
FileName: pchar;
begin
RootKey := HKEY_LOCAL_MACHINE;
KeyName := 'software\myreg'; RegOpenKeyEx(RootKey, PChar(KeyName), 0, KEY_ALL_ACCESS, phKey); sKeyFileName := 'D:\myreg2'; StrPCopy(FileName,sKeyFileName); if RegSaveKey(phKey, FileName, nil)= 0 then
ShowMessage('导出成功')
else
ShowMessage('导出失败'); RegCloseKey(phKey);
end;procedure TForm1.BitBtn4Click(Sender: TObject);
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;
StrPCopy(FileName,sKeyFileName);应该去掉,if RegSaveKey(phKey, FileName, nil)= 0 then
改为:
if RegSaveKey(phKey, PChar(sKeyFileName), nil)= 0 then————————————————————————————————————
宠辱不惊,看庭前花开花落,去留无意;毁誉由人,望天上云卷云舒,聚散任风。
————————————————————————————————————
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;————————————————————————————————————
宠辱不惊,看庭前花开花落,去留无意;毁誉由人,望天上云卷云舒,聚散任风。
————————————————————————————————————