问题描述
- Win7文件夹访问权限问题
-
1.系统中建立dell用户,并将该用户添加到"Administrators"用户组下。如下图
2.然后建立文件夹d:local9999,并且仅仅设置"Administrators"用户组能够完全控制该目录。如下图
3.以dell用户登录Windows,自己编写程序访问d:local9999目录的话,会出现权限不足的错误。
3.只有在资源管理器中访问d:local9999目录时,出现如下图对话框。
4.然后系统自动给d:local9999目录中添加了用户"dell"的完全控制权限。如下图
5.这样程序访问d:local9999目录才正常。
为什么"dell"用户属于"Administrators"用户组,却不能正常的访问d:local9999目录呢?
解决方案
这是因为微软为给Vista及后续版本Windows更换UAC而增加的一项机制叫“管理员以标准用户身份运行时”,简单说就是进程即使以管理员用户运行,那么他依旧可以是“标准用户权限”令牌,UAC开启时(这里的UAC开启和控制面板里的UAC滑块并无决定关系,可以通过组策略调整),Windows的Shell进程explorer.exe就是“管理员以标准用户身份运行时”,所以explorer不能访问这个文件夹,当你按下“继续”时,explorer创建一个COM对象要求这个COM提权,由于这个COM对象在系统的白名单里,AppInfo服务不创建UI交互进程直接允许提权,之后这个COM修改ACL(访问控制列表),并允许dell用户访问,这样“管理员以标准用户身份运行时”的explorer才有权限访问。
解决方案二:
直接点继续不就行了吗,,
解决方案三:
如果不在资源管理器中点击继续的话,我的程序访问该目录就会出错。
解决方案四:
我需要问的是为什么用户"dell"属于"Administrators"用户组,且该用户组对D:local9999目录有完全控制权限,为甚么不能直接访问该目录
时间: 2025-01-01 23:41:45