2011-10-24 48 views
0

我可以告诉你,非管理员的不准写信至:存储管理员和非管理员都可以进行通用访问的配置数据的位置?

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但可悲的是对于普通用户有限,也是一个人的禁区。我需要一个共同的,容易的,错误的,知道&找到,我可以加载配置数据并将其保存到的目录。我想我可以支持每个用户的配置文件,但我宁愿让事情尽可能简单。

我可以让我的安装程序为registry或文件系统留出一部分区域用于通用访问吗?我使用Innosetup和.NET代码进行安装。我注意到(IRC)firefox填充了“应用程序数据”文件夹的名称默认用户,所以我想这是另一种可能性。由于服务需要配置数据,因此在注册表以外的任何地方存储几个短的string s和int s可能会很麻烦。

+0

我不明白。完全使用注册表时出现什么问题?这就是它设计的 – carpii

+0

是否有一个理由,每个人都应该有相同的配置?在大多数情况下,最终用户不会期望或不想要这种行为,并且还会引入潜在的安全问题。 –

回答

0

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

受限用户只能访问HKCU。这与使用文件系统相同 - 某些用户特定的分支将是可写的。在用户登录的适当时间检查全局配置文件的写入访问权限,然后在抛出时委托给用户本地配置,这是一件很麻烦的事情,但这是必须完成的。更容易碎片整理和更少的性能打击,我会尝试在HKCU之前使用FS。

+0

这就解决了。我测试了对'CommonApplicationData'的写入访问权限,如果需要的话,可以使用'ApplicationData'。有趣的是回退并不是必需的,也许我在'CommonApplicationData'下编程创建一个子文件夹的方式与它有关。 – John

相关问题