导入注册表 RegLoadKey and Reg.LoadKey.高手帮忙!! (100分)

  • 主题发起人 Tonny123
  • 开始时间
T

Tonny123

Unregistered / Unconfirmed
GUEST, unregistred user!
(NT 下 )我想把使用Reg.SaveKey保存出来的注册表信息 导入回注册表
使用Reg.LoadKey 和(RegLoadKey)均出错ErrorCode =1314:权限问题。
(我的权限应该是赋予了的)
高手帮忙了。。。
附代码如下:

Function LoadRegKey(RootKeyName: hKey; APath: String;FileName: String):Boolean;
const
ADJUST_PRIV = TOKEN_QUERY or TOKEN_ADJUST_PRIVILEGES;
SHTDWN_PRIV = 'SeBackupPrivilege';
PRIV_SIZE = sizeOf(TTokenPrivileges);
var
Reg: TRegistry;
TokenPriv, Dummy: TTokenPrivileges;
Token: THandle;
Len:DWORD;

errorCode: integer;
begin
try
Result :=True;
Reg := TRegistry.Create;
Reg.RootKey := RootKeyName;

OpenProcessToken(GetCurrentProcess(), ADJUST_PRIV, Token);
LookupPrivilegeValue(nil, SHTDWN_PRIV,TokenPriv.Privileges[0].Luid);
TokenPriv.Privileges[0].Attributes :=SE_PRIVILEGE_ENABLED;
TokenPriv.PrivilegeCount := 1; // One privilege to set
AdjustTokenPrivileges(Token, false, TokenPriv, PRIV_SIZE,Dummy, Len);

try
{使用RegLoadKey API}
errorCode :=RegLoadKey(RootKeyName, PChar(APath), PChar(FileName));
if errorCode = ERROR_SUCCESS then
Result :=True
else
begin
ShowMessage(IntToStr(errorCode)+':'+SysErrorMessage(errorCode));
Result :=False;
end;
{使用Reg.LoadKey方法
if Reg.LoadKey(APath,FileName) then
begin
showmessage('load...');
Result :=True;
end
else
begin
showmessage('faile...');
Result :=False;
end;
}
finally
Reg.Free;
end;
except
Result :=False;
end;
end;
 
关注,我看看
 
SHTDWN_PRIV = 'SeBackupPrivilege';
改成 SeResotreProvilege
就可以了.
但是一些特殊的键还是不行
 
K_L_M可以
K_C_U不行!
 

Similar threads

顶部