RegSaveKeyEx需要提升吗?

时间:2009-07-06 18:43:31

标签: winapi registry

我的代码使用Win API函数RegSaveKeyEx将注册表项保存到文件中。但是,在Win Vista或Win 7上运行时,RegSaveKeyEx返回ERROR_PRIVILEGE_NOT_HELD。该代码使用Microsoft在示例函数SetPrivilege中提供的代码启用安全权限SE_BACKUP_NAME。

在Win XP(管理员用户)上,或者如果我在Win Vista或Win 7上禁用UAC,一切正常。如果不升级过程,是否无法在Vista上使用RegSaveKeyEx?

2 个答案:

答案 0 :(得分:1)

标准用户没有SE_BACKUP_NAME权限,因此,如果没有提升,RegSaveKeyEx将无法在Vista上运行。

备份是非常“危险”的权限之一 - 它使您能够基本上读取磁盘上的任何内容,无论ACL是什么。

答案 1 :(得分:1)

您可以通过转到以下内容来授予特定用户(或组)的权限...

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

...并添加您想要的用户(或组)。或者您可以将用户添加到Backup Operators。

但是,你应该在这里保持谨慎。请参阅迈克尔下面的评论。