2011-10-24 51 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

相關問題