【问题标题】:Where to store configuration data for universal access by admin and non-admin alike?在哪里存储管理员和非管理员通用访问的配置数据?
【发布时间】:2011-10-24 03:23:23
【问题描述】:

我可以告诉你哪些地方不允许非管理员写信:

Environment::GetFolderPath(Environment::SpecialFolder::ApplicationData) + "\\Config.ini";
Environment::GetFolderPath(Environment::SpecialFolder::CommonApplicationData) + "\\monitorService\\Config.ini";
Environment::GetFolderPath(Environment::SpecialFolder::ProgramFiles) + "\\monitorService\\Config.ini";

我对@9​​87654323@ 寄予厚望,但遗憾的是,普通受限用户也无法使用。我需要一个通用的、易于出错、知道和查找的目录,我可以从中加载配置数据并将其保存到其中。我想我可以支持每个用户的配置文件,但我宁愿让事情尽可能简单。

我是否可以让我的安装程序留出registry 或文件系统的某些区域以供普遍访问?我使用 Innosetup 和 .NET 代码进行安装。我注意到(IRC)firefox 为命名的 和 默认用户填充了“应用程序数据”文件夹,所以我猜这是另一种可能性。由于服务需要配置数据,因此将几个短的strings 和ints 存储在注册表之外的任何地方可能太麻烦了。

【问题讨论】:

  • 我不明白。究竟使用注册表有什么问题?这就是它的设计目的
  • 每个人都应该有相同的配置有什么理由吗?在大多数情况下,最终用户不会期望或不想要这种行为,而且还会引入潜在的安全问题。

标签: windows windows-services filesystems privileges non-admin


【解决方案1】:

由于没有人回答,我不妨在实施时提出我的解决方案。

受限用户只有 HKCU 的写入权限。这与使用文件系统相同——一些用户特定的分支是可写的。必须在用户登录的正确时间检查对全局配置文件的写访问权,然后如果它抛出,则委托给用户本地配置是很麻烦的,但这是必须要做的。为了更容易进行碎片整理并且对性能的影响较小,我将尝试在 HKCU 之前使用 FS。

【讨论】:

  • 解决了。我测试了对CommonApplicationData 的写访问权,并在需要时回退到使用ApplicationData。有趣的是,没有必要回退,也许我以编程方式在CommonApplicationData 下创建子文件夹的方式与它有关..
猜你喜欢
  • 2021-04-23
  • 1970-01-01
  • 2012-10-10
  • 1970-01-01
  • 2019-01-06
  • 1970-01-01
  • 2021-01-02
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多