【问题标题】:RegSaveKeyEx Requires Elevation?RegSaveKeyEx 需要海拔?
【发布时间】:2009-07-06 18:43:31
【问题描述】:

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

在 Win XP(管理员用户)或我在 Win Vista 或 Win 7 上禁用 UAC 时一切正常。难道不提升进程就不能在 Vista 上使用 RegSaveKeyEx 吗?

【问题讨论】:

    标签: winapi registry


    【解决方案1】:

    标准用户没有 SE_BACKUP_NAME 权限,所以不,RegSaveKeyEx 将无法在没有提升的 Vista 上工作。

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

    【讨论】:

      【解决方案2】:

      您可以通过以下方式授予特定用户(或组)权限...

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

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

      但是,你应该在这里小心。请参阅下面 Michael 的精彩评论。

      【讨论】:

      • 我会非常谨慎地授予用户备份权限 - 它允许他们绕过所有文件读取操作的 ACL。这意味着非特权用户将能够读取磁盘上的任何内容——甚至是缓存的密码数据。
      猜你喜欢
      • 1970-01-01
      • 2011-04-21
      • 2016-12-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-06-19
      • 2011-11-07
      • 2016-05-22
      相关资源
      最近更新 更多