2013-01-16 227 views
1

我的程序中使用它创建数据文件库,有一些用户采取了错误的“以管理员身份运行”我的程序有问题,结果是与管理员拥有者创建了一些数据文件,普通用户以后不能编辑它。我正在寻找一种方法'放弃'管理员权限,允许我的程序继续运行,例如没有用户'以管理员身份运行'?我怎样才能做到这一点?C++降管理员权限

+0

可能需要修复文件权限问题吗? –

+0

是的,但该文件是通过第三个库中创建,所以我不能指定文件创建安全属性。我正在寻找一种方法来更改默认文件权限,也许删除管理员权限会有所帮助。 – secmask

回答

1

我最终以此为目标,让新对象的拥有者成为当前用户。

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

好的解决方案,我不知道你可以做到这一点。 – Ben

2

要做你在问什么,你需要检测你是否以管理员身份运行,如果是这样,创建一个受限令牌,并使用该令牌重新启动程序。是

才达到类似的结果的其他方式如下。

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

查看更多在这里:

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

+0

小心测试没有UAC一台机器上,这里是admin用户的 – Deanna

+0

另一种选择是等待第三方库创建该文件,然后使用['SetFileSecurity()'](HTTP不受限令牌:// MSDN .microsoft.com/EN-US需要/库/窗/台式机/ aa379577.aspx)来改变它的安全信息。 –