c ++删除管理员权限

时间:2013-01-16 06:52:51

标签: c++ c windows winapi

我的程序使用一个创建数据文件的库,有一些用户错误地“以管理员身份运行”我的程序,结果是一些数据文件是由管理员所有者创建的,普通用户无法编辑它以后。我找到了一种'drop'管理员权限,允许我的程序继续运行,例如没有用户'以管理员身份运行'?我怎么能这样做?

2 个答案:

答案 0 :(得分:2)

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

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

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

在此处查看更多信息:

或者,使用CreateFile时,您可以在创建文件时使用SECURITY_DESCRIPTOR指定所有者,并将其设置为用户或其任何群组。

答案 1 :(得分:1)

我最终将此对象设为当前用户的新对象的所有者。

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