如果应用程序以管理员身份运行,则会出现奇怪的文件权限
我的程序必须以管理员身份运行并创建一些文件。如果我通过右键单击图标并选择“以管理员身份运行”来手动运行它 - 一切正常 - 所有用户都可以访问创建的文件。但是,如果程序通过 ShellExecuteEx 使用“runas”动词从另一个程序启动,则创建的文件没有 BUILTIN\Users 组的访问条目。只有管理员用户才能读取这些文件。
My program must be run as administrator and creates some files. If I run it manually by right-click on the icon and selecting "run as administrator" -- everything okay -- all users have access to created files. But if program launched from the another program by ShellExecuteEx with "runas" verb -- created files have no access entry for BUILTIN\Users group. Only administrator users can read those files.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
为什么不设置链接器标志(VC2008 及更高版本):
链接器->清单 -> UAC 执行级别:requireAdministrator (/level='requireAdministrator')
编辑:我重新阅读了问题,发现问题可能与 NTFS 文件安全性有关。这不是你的程序的错,而是设计使然。任何创建文件和文件夹的用户都只会被授予该用户的权限。
以管理员用户身份登录,创建一个文件夹。然后以另一个用户身份重新登录(无论您喜欢什么),并尝试访问/读取/写入/删除该文件夹 - 您不能。权限授予管理员用户,而不是所有人/用户组。
Why not setup the linker flag (VC2008 and higher):
Linker -> Manifest -> UAC Execution Level: requireAdministrator (/level='requireAdministrator')
EDIT: I re-read the question, and found that problem is probably with NTFS file-security. This is not your program's fault, but this is by design. Any user who creates files and folders is given permissions to that user only.
Login as administrator user, create a folder. Then re-login as another user (however you like), and try to access/read/write/delete that folder - you cannot. The permissions are granted to administrator user, and not to everyone/users-group.