2009-01-15 18 views
2

访问文件这里是我的情况:Windows服务,以控制“所有用户应用数据”

我有使用配置文件的应用程序。配置文件适用于系统的所有用户,并且所有用户都可以更改配置。

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

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

这里是我的临时解决方案:

在创建文件,应用程序设置的安全性选项,以便它可以通过系统的所有用户都可以写。

但是,I think this is a hack,我想我必须创建一个服务来管理对文件的访问。

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

我的问题:

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

编辑:

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

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

也许我的最终解决方案是“让所有用户都可写入”,但我的问题实际上是:“我的解决方案是否合适,或者您是否拥有另一个更简单的解决方案,而不依赖黑客修复Microsoft的行为” 。

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

非常感谢,

尼克

回答

0

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

3

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

1

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

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

或者,使用数据库。

相关问题