管理员和非管理员都可以在何处存储配置数据以进行通用访问?

时间:2011-10-24 03:23:24

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

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

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

我对Environment::SpecialFolder::CommonApplicationData寄予厚望,但遗憾的是,对于普通的有限用户来说,这也是一个限制。我需要一个共同的,容易的,错误的,知道的和find,我可以从中加载配置数据的目录并将其保存到。我想我可以支持每个用户的配置文件,但我宁愿让事情尽可能简单。

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

1 个答案:

答案 0 :(得分:0)

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

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