2009-10-12 13 views

回答

26

ApplicationData:您的應用程序需要的每個用戶的數據並且不屬於其他類別。標準配置文件會在這裏。

CommonApplicationData:所有不是「每個用戶」的數據。

LocalApplicationData:數據是每個用戶和非漫遊。例如,你想確保它只存儲在這臺機器上的所有東西(比如機器激活碼,通常也是緩存/臨時數據)。標準的臨時文件會放在這裏。

MyDocuments:用戶實際上將識別爲「可識別單個文檔」的用戶數據。

如果您不關心文件名,還可以使用臨時文件API在temp目錄中生成一個臨時文件。您不應該手動執行此操作。例如,在.NET中,您可以使用Path.GetTempFileName()作爲此目的。

+1

+1有用的答案,特別是關於「每個用戶」的區別。但是,我不清楚那些粗體字是什麼...文件夾的字面名稱?沒有...圖書館? .NET用來引用文件夾的某種抽象? – LarsH 2012-08-31 15:34:50

+2

@LarsH:「但我不清楚粗體名稱是什麼......」它們是.Net Environment.SpecialFolder枚舉常量 - 請嘗試單擊它們。 :-) – RenniePet 2013-09-16 02:40:55

+0

@RenniePet:kthx。 :-) – LarsH 2013-09-16 13:08:02

1

AppData應該是自動配置和配置文件,文件只應該是用戶保存的文件。我會在AppData/Roaming和AppData/Local或LocalLow中的任何其他內容(特定於計算機)中放置可用於多個系統的任何內容。對於臨時文件,請使用Temp目錄。

+0

我同意。當我在(My)文檔中安裝make目錄和/或存儲文件時,我討厭它。 – 2009-10-12 18:22:22

+0

你可以根據Environment.SpecialFolder枚舉來翻譯你的答案嗎? Environment.GetFolderPath(Environment.SpecialFolder.xxx) – Nestor 2009-10-12 18:28:02

1

一般來說,Windows最佳實踐是遵循適當的環境變量。您想要保留的配置數據應該在%APPDATA%中,臨時文件應該在%TEMP%中。

這具有如果Windows改變東西並且尊重人們可能具有的奇怪配置不會破壞的優點。

此外,我同意其他答案,即「文檔」應該只用於用戶創建的數據,並且僅在提示後。

10

Windows 7 Client Software Logo Program

  • 應用程序應該被默認安裝到Program Files文件夾。用戶數據或應用程序數據不得存儲在此位置,因爲對於本機32位和64位應用程序的安全許可 %ProgramFiles%和對x64分別覆蓋的32位應用程序的%ProgramFiles(x86)%分別覆蓋其他的數據和設置。
  • 必須在計算機上的用戶之間共享的所有應用程序數據應存儲在ProgramData中
  • 所有獨佔於特定用戶且不與計算機的其他用戶共享的應用程序數據必須存儲在Users \\ AppData
  • 不要直接寫入「Windows」目錄和/或子目錄。使用正確的方法安裝文件,例如字體或驅動程序
  • 在「每臺機器」安裝中,用戶數據必須在第一次運行時寫入,而不是在安裝期間寫入。這是因爲在安裝時沒有正確的用戶位置來存儲數據。嘗試通過應用程序在安裝後修改計算機級別的默認關聯行爲將不成功。相反,必須在每個用戶級別聲明默認值,這可以防止多個用戶覆蓋對方的默認值。
0

此外,您應該使用SHGetFolderPath或SHGetKnownFolderPath(在Vista +)獲取路徑。這將爲您提供當前系統的正確位置,而不管當前安裝的版本或語言如何。從不硬編碼您正在使用的任何路徑。

相關問題