2010-08-10 64 views
0

虽然我试图使用C#代码在注册表中上载注册表,但应用程序正在抛出错误“所需的特权不由客户端”。如果我使用相同的代码一些其他的机器上工作正常,但不是特别在我的机器上上传临时注册表(C#)时,客户端不具备所需的特权

我使用下述代码上传的注册表文件

Process my_p = new Process(); 
my_p.StartInfo.FileName = "reg"; 
my_p.StartInfo.Arguments = "load HKLM\TEST C:\Documents and Settings\Administrator\NTUSER.DAT"; 
my_p.Start(); 
my_p.WaitForExit(); 
System.IO.StreamReader srOutPut = my_p.StandardOutput; 
System.IO.StreamReader srError = my_p.StandardError; 
my_p.Close(); 
results = srOutPut.ReadToEnd().Trim(); 
Errors = srError.ReadToEnd().Trim(); 

另外有一件事我注意到,上述代码我在基于http的网站中使用,但是当我在基于文件Syatem的网站中使用它时,它工作正常。请帮助我没有得到错误。

问候, 维克拉姆

回答

0

您可以直接加载RegLoadKey函数加载配置单元将作为一个子项。另一个API是RegLoadAppKey,但它只能从Windows Vista开始。不同版本的Reg.exe使用API​​。如何在说明书中阅读RegLoadKey您需要有SE_RESTORE_NAMESE_BACKUP_NAME权限并启用这些权限(请参阅http://msdn.microsoft.com/en-us/library/ms717797.aspx)。如果您在管理员组或备份操作员组中,则拥有这些权限。如果Reg.exe使用RegLoadKey函数并且您具有本地管理权限,但是您在Vista或Windows 7上启动了一个没有管理员权限的命令(因为UAC(用户帐户控制)),则还会出现另一个问题。