2009-07-20 113 views
1

我的程序需要一些配置細節保存在.ini文件中。這個程序也安裝擴展到IE和Firefox,我也想從這些擴展名讀取這些.ini文件。如果我將.ini保存在「... AppData/Roaming ...」中,保護模式下的IE擴展將無法讀/寫。據我所知,只有AppData/LocalLow只能讀取保護模式。如果我將所有配置細節都移動到「... AppData/LocalLoe ...」,它會一直工作嗎?這是標準方式嗎?我寫的所有東西都在Vista環境下,它能與XP一起工作嗎? Win7的?哪個是在WINDOWS中保存程序配置文件的最佳位置?

回答

0

見我回答這個問題:How to decide where to store per-user state? Registry? AppData? Isolated Storage?

從那裏引用:

文件在用戶的「漫遊」在XP在Vista或「應用程序數據」文件夾中走動的用戶 - 因此,任何設置和數據應該存儲在那裏。

Vista中「Local」和「LocalLow」下的文件和XP中的「Local Settings」中沒有文件,所以它是臨時文件的好地方,與特定計算機或可重新計算的數據有關。在Vista中,作爲我們都知道並喜愛的新安全功能的一部分,您可以讓程序以「低完整性模式」運行(例如IE處於保護模式),這些程序的運行權限降低,並且可以「 t訪問用戶配置文件中的文件 - 「LocalLow」文件夾下的文件除外。

因此,總之,存儲在「LocalLow」中的文件本質上是不安全的,「本地」/「本地設置」中的文件很可能在某些大公司中不可用 - 所以除非您有充分的理由,正在做「漫遊」/「應用程序數據」。

UPDATE:

  1. 當使用漫遊配置文件(大合作環境)的本地內容和LocalLow可以(會)消失,恕不另行通知。
  2. 這些都是針對每個用戶的設置,如果您的服務器在與用戶(例如系統或網絡)不同的帳戶下運行,他們將獲得這些文件夾的不同副本。
+0

感謝您的回覆。我的主要應用程序是一個小型的Web服務器,我們有擴展到IE和Firefox。因此,我們需要保持運行web服務器的端口在.ini中,擴展應該能夠讀取它,以便我們可以構建正確的URL。如果我保持漫遊IE保護模式將無法讀取它,如果我保持在LocalLow中,我無法找到一個XPCom接口(腳本化)來查找LocalLow文件夾路徑。 – Manoj 2009-07-20 07:43:16

0

要獲取程序數據,你應該使用WinAPI的文件夾路徑:

wchar_t path_buf[MAX_PATH]; 
SHGetFolderPath(NULL, CSIDL_COMMON_APPDATA, NULL, SHGFP_TYPE_CURRENT, &path_buf[0]); 

在Windows Vista功能的SHGetFolderPath與SHGetKnownFoldedPath取代。這個較舊的函數現在只是SHGetKnownFolderPath的一個包裝器。

相關問題