【问题标题】:Strange file-permissions if apps run as administrator如果应用程序以管理员身份运行,则奇怪的文件权限
【发布时间】:2011-04-09 12:26:16
【问题描述】:

我的程序必须以管理员身份运行并创建一些文件。如果我通过右键单击图标并选择“以管理员身份运行”手动运行它——一切正常——所有用户都可以访问创建的文件。但是,如果 ShellExecuteEx 使用“runas”动词从另一个程序启动的程序 - 创建的文件没有 BUILTIN\Users 组的访问条目。只有管​​理员用户可以读取这些文件。

【问题讨论】:

  • 这真的取决于您如何使用 Windows 的 UAC,如果您的应用程序是“本机 C++ 程序”或使用过 .NET API(如果您使用 Visual C++)。
  • 它是原生 C++ 程序。仅使用 WinAPI
  • 我认为尝试修复它是没有意义的。无论你做什么,微软都会再次搞砸它。考虑一下,根据关于 UAC 的 Wikipedia 文章中的报告,它可能只是为了非常明显地向用户展示 Windows 正在做一些安全方面的事情,即被设计成令人讨厌和搞砸的事情。

标签: c++ winapi uac shellexecute runas


【解决方案1】:

为什么不设置链接器标志(VC2008 及更高版本): 链接器 -> 清单 -> UAC 执行级别:requireAdministrator (/level='requireAdministrator')

编辑:我重新阅读了这个问题,发现问题可能与 NTFS 文件安全有关。这不是您的程序的错,但这是设计使然。任何创建文件和文件夹的用户只被授予该用户的权限。

以管理员用户身份登录,创建文件夹。然后以另一个用户身份重新登录(无论您喜欢什么),并尝试访问/读取/写入/删除该文件夹 - 您不能。权限授予管理员用户,而不是所有人/用户组。

【讨论】:

    猜你喜欢
    • 2016-05-30
    • 2011-05-11
    • 2011-09-24
    • 2010-12-19
    • 1970-01-01
    • 2011-12-29
    • 1970-01-01
    • 2013-05-31
    相关资源
    最近更新 更多