Windows服务来控制对“所有用户\应用程序数据”中的文件的访问

这是我的情况:

我有一个使用configuration文件的应用程序。 configuration文件适用于系统的所有用户,所有用户都可以更改configuration。

我决定把configuration文件放在“All Users \ Application Data”文件夹中。

问题是该文件只能由创build它的用户写入。

这是我的临时解决scheme:

创build文件时,应用程序设置其安全选项,以便系统的所有用户都可以写入。

但是, 我认为这是一个黑客攻击 ,我想我必须创build一个服务来pipe理对文件的访问。

我的应用程序是用C ++(MFC)编写的,我不是所有.Net内容的专家。 所以我的第一个想法是编写一个Windows C ++服务与COM接口,将由应用程序调用。

我的问题:

  • 我的想法是一个好主意还是有人知道更好的方法?
  • 是否有任何新的更新的方式在Windows比在纯C + +和COM服务?

编辑:

我知道很容易为所有用户设置写入权限。

回到Windows XP,用“受限用户”在“HKLM”下的“程序文件”和registry项下编写文件也很容易。 但是现在,如果您希望应用程序具有Vista徽标authentication,则不得写入这些位置(虚拟商店可以“保存”您的事件)。

也许我的最终解决scheme是“让所有用户都可写”,但是我的问题确实是:“我的解决scheme是否合适,或者是否有另一种更简单的解决scheme,而不依赖于黑客修复微软的行为”。

我真的很抱歉没有从头开始说清楚。

非常感谢,

尼克

我甚至不会打扰COM。 为您的服务命名的管道也能正常工作,并且使用ACL保护这些管道要容易得多。 该服务将是如此简单,我甚至不打扰MFC或.NET,纯C ++应该没问题。 所有繁重的工作都是由你的真实应用完成的。 该服务只是检查输入的请求是否合理。 (即不太大等)

这不是正确的做法。 如果您将该文件放在“所有用户\应用程序数据”中,那么它应该是所有用户可写入的。 当您创建它时,请为所有用户创建写入权限。 设置创建权限并不难。

Raymond Chen的文章很有趣也很详细,但通常过于教条化,不切实际。 除非这是一个有篡改危险的关键任务系统,否则我会用一大堆NaCl来看待他的观点。

你的用户是否打算直接打开和修改文件? 如果没有,只要使文件全局可写,并在你的应用程序的界面执行理智的变化。 对于大多数应用程序来说,保护多用户系统免受篡改是不值得花时间和精力的。

或者,使用数据库。