如何使文件读写到程序,但只读/不能访问Windows中的非管理员用户?

时间:2013-05-01 05:38:06

标签: windows file-permissions

我想做以下事情:

  1. 非管理员用户可以在没有UAC提示的情况下运行我的程序。
  2. 该程序可以完全访问特定文件。
  3. 在程序之外,用户具有只读或无权访问该文件。他们无法修改文件。他们只能通过程序修改它。
  4. 有可能吗?

2 个答案:

答案 0 :(得分:3)

Applications don't have privileges, users do。 “程序具有对特定文件的完全访问权限”和“用户具有对特定文件的完全访问权限”的条件无法区分,因为程序以与启动它的用户相同的权限运行。

因此,为了使程序以更高的权限运行,它需要以不同的用户身份运行。您可以在可执行文件中通过embedding an application manifest执行此操作。当然,然后当你运行它时,你会得到一个UAC提示符,that cannot be bypassed

答案 1 :(得分:2)

您需要将代码分成两部分;用户界面,在用户的上下文中运行,以及以管理员权限运行的服务。

如果您正在使用C编程,请从MSDN library section on services开始,以获取一般概述以及权威参考。

您可能希望使用named pipes作为UI和后端之间的通信机制,但根据您的具体需求,还有其他选项。

作为优化,一旦您使其正常工作,请配置该服务,使其仅在UI需要时启动。 This answer显示了如何配置服务,以便任何用户都可以启动它。