2009-07-06 26 views
0

我有使用Win API函数RegSaveKeyEx将注册表项保存到文件的代码。但是,在Win Vista或Win 7上运行时,RegSaveKeyEx会返回ERROR_PRIVILEGE_NOT_HELD。该代码通过示例函数SetPrivilege使用Microsoft提供的代码启用安全特权SE_BACKUP_NAME。RegSaveKeyEx需要立面图吗?

一切工作正常在Win XP(admin用户),或者如果我在Win Vista或赢7.禁用UAC是没可能使用RegSaveKeyEx在Vista上没有提升的过程?

回答

1

标准用户不必SE_BACKUP_NAME特权,所以没有,RegSaveKeyEx不会在Vista上没有提升工作。

备份是非常“危险”的特权之一 - 它使您能够基本读取磁盘上的任何内容,而不管ACL如何。

1

您也可以前往以下赋予权限的特定用户(或组)...

Control Panel-> 
    Administrative Tools-> 
    Local Security Policy-> 
     Local Policies-> 
     User Rights Assignment-> Back up files and directories (SE_BACKUP_NAME) 

...并添加你想要的用户(或组)。或者你可以将用户添加到备份操作员。

但是,你应该谨慎在这里。 Michael看到下面的评论。

+1

我会非常谨慎地授予用户备份权限 - 它允许他们绕过所有文件读取操作的ACL。这意味着非特权用户将能够读取磁盘上的任何内容 - 即使是缓存的密码数据。 – Michael 2009-07-06 19:01:21