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

问题描述:

我想要做以下事情:如何将文件读写到程序中,但只读/不能访问Windows中的非管理员用户?

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

可能吗?

+1

您可以加密文件并将加密密钥嵌入到程序中。这样该文件不能被用户修改或读取(但可以被删除)。 – 2013-05-03 06:00:18

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

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

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

作为优化,一旦你得到它的工作,配置服务,以便它只在UI需要它时开始。 This answer显示了如何配置服务,以便任何用户都可以启动它。

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

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