我的程序使用一个库来创build一个数据文件,有一些用户误以为是以pipe理员身份运行我的程序,结果是有一些数据文件是用pipe理员所有者创build的,一般用户以后不能编辑。 我正在寻找一种方式'放弃'pipe理员权限,这允许我的程序继续运行,如没有用户'以pipe理员身份运行'? 我怎样才能做到这一点?
要做你在问什么,你需要检测你是否以管理员身份运行,如果是这样,创建一个受限令牌,并使用该令牌重新启动程序。
其他获得类似结果的方法如下。
对于该组的成员,文件的所有者默认设置为管理员组。 此设置可以由本地安全策略控制:
在这里看到更多:
或者,在使用CreateFile
,您可以在创建文件时使用SECURITY_DESCRIPTOR
指定所有者,并将其设为用户或其任何组。
我最终以此来使新对象的拥有者成为当前用户。
if(GetTokenInformation(hToken,TokenUser,tu,buff.size(),&rw)){ if(!SetTokenInformation(hToken,TokenOwner,tu,buff.size())){ } }