如果应用程序以管理员身份运行,则会出现奇怪的文件权限

发布于 2024-10-31 21:13:26 字数 177 浏览 6 评论 0原文

我的程序必须以管理员身份运行并创建一些文件。如果我通过右键单击图标并选择“以管理员身份运行”来手动运行它 - 一切正常 - 所有用户都可以访问创建的文件。但是,如果程序通过 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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

倾城°AllureLove 2024-11-07 21:13:26

为什么不设置链接器标志(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.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文