【问题标题】:c++ drop administrator privilegesc++ 删除管理员权限
【发布时间】:2013-01-16 06:52:51
【问题描述】:

我的程序使用了一个创建数据文件的库,有一个问题是一些用户错误地“以管理员身份运行”我的程序,结果是一些数据文件是用管理员所有者创建的,普通用户无法编辑稍后。我正在寻找一种“删除”管理员权限的方法,允许我的程序继续运行,例如没有用户“以管理员身份运行”?我该怎么做?

【问题讨论】:

  • 您需要解决文件权限问题吗?
  • 是的,但是文件是通过第三个库创建的,所以我无法为文件创建指定安全属性。我正在寻找一种更改默认文件权限的方法,也许放弃管理员权限会有所帮助。

标签: c++ c windows winapi


【解决方案1】:

要执行您的要求,您需要检测您是否以管理员身份运行,如果是,则创建一个受限令牌,然后使用该令牌重新启动程序。

获得类似结果的其他方法如下。

对于该组的成员,文件的所有者默认设置为管理员组。此设置可由本地安全策略控制:

在这里查看更多:

或者,当使用CreateFile 时,您可以在创建文件时指定所有者,使用SECURITY_DESCRIPTOR,并使其成为用户或他的任何组。

【讨论】:

  • 小心在没有 UAC 的机器上进行测试,因为管理员用户没有受限令牌
  • 另一种选择是等待第三方库创建文件,然后根据需要使用SetFileSecurity() 更改其安全信息。
【解决方案2】:

我最终将新对象的所有者授予当前用户。

if(GetTokenInformation(hToken,TokenUser,tu,buff.size(),&rw)){    
    if(!SetTokenInformation(hToken,TokenOwner,tu,buff.size())){    
    }    
}

【讨论】:

  • 很好的解决方案,我不知道你能做到。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-04-18
  • 1970-01-01
  • 2020-04-27
  • 1970-01-01
  • 1970-01-01
  • 2021-06-27
  • 2023-01-20
相关资源
最近更新 更多