【问题标题】:Windows service to control access to a file in "All Users\Application Data"用于控制对“所有用户\应用程序数据”中文件的访问的 Windows 服务
【发布时间】:2009-01-15 14:41:13
【问题描述】:

这是我的情况:

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

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

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

这是我的临时解决方案:

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

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

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

我的问题:

  • 我的想法是个好主意还是有人知道更好的方法?
  • 除了普通的 C++ 和 COM 之外,在 Windows 中提供服务是否有任何更新的新方法?

编辑:

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

回到 Windows XP 中,在“程序文件”下编写文件和在“HKLM”下编写注册表项也很容易,但用户受限。但是现在,如果您希望应用程序获得 Vista 徽标认证,则不能写信到这些位置(如果虚拟商店可以“拯救”您)。

也许我的最终解决方案将是“使其对所有用户都可写”,但我的问题确实是:“我的解决方案好还是您有另一个更简单的解决方案,它不依赖于破解微软修复的行为”。

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

非常感谢,

网卡

【问题讨论】:

    标签: c++ windows mfc


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

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

      您的用户会直接打开和修改文件吗?如果不是,只需使文件全局可写并在您的应用程序界面中强制执行合理的更改。对于大多数类别的应用程序来说,保护多用户系统不被篡改是不值得的。

      或者,使用数据库。

      【讨论】:

        【解决方案3】:

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

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2017-05-06
          • 2012-05-26
          • 1970-01-01
          • 1970-01-01
          • 2011-07-20
          • 2011-09-24
          • 2019-07-04
          • 1970-01-01
          相关资源
          最近更新 更多