2010-08-24 45 views
3

我需要在windows用戶的主目錄(c:\Documents and Settings\someusername\c:\users\someusername\)內創建一個目錄。該目錄將永久存在,但只包含臨時文件。正確使用Windows用戶配置文件目錄

如果我想成爲一個好公民,這個目錄在用戶檔案中的最佳位置是什麼?我應該注意到,我的程序將由(可能)非管理員用戶運行,並且只需要訪問他們自己的配置文件,但他們必須有權創建該文件夾。

使用My Documents\NameOfMyApp\是可能的我猜,但這似乎侵入。

這種類型的數據和特定的MFC調用是否有更好的位置訪問它?

回答

4

我會考慮使用AppData目錄。你可以通過SHGetSpecialFolderLocation獲得它的位置CSIDL_APPDATA; (或許多替代方案 - 幾乎所有版本的Windows都添加了SHGetSpecialFolderLocationSHGetSpecialFolderPath或(經常)兩者的新替代品)。

+0

您還需要考慮這些數據是否應該「漫遊」或是本地機器。 – 2010-08-24 20:08:06

+0

MSDN(http://msdn.microsoft.com/en-us/library/bb762494%28VS.85%29。aspx)似乎表明CSIDL值不應該用於新的開發,但是我必須早於Windows 2000支持客戶端,直至Windows 7.「CSIDL_APPDATA」能否在Windows 7上運行? – theycallmemorty 2010-08-24 20:09:03

+0

@theycallmemorty:你可能會考慮'ShGetFolderLocation'而不是Win2K,儘管它仍然使用CSIDL。快速檢查表明'SHGetSpecialFolderLocation(CSIDL_APPDATA)'似乎仍然適用於Win7。 – 2010-08-24 20:34:00

0

作爲一個好的申請公民,您應該使用: [drive]:\ Documents and Settings [username] \ Application Data [AppName]或 [drive]:\ Documents and Settings [username] \ Local Settings \ Application數據[AppName] (在Vista和Win7上,「Documents and Settings」被替換爲最合理的「Users」)

環境變量USERPROFILE將提供您猜到的用戶配置文件路徑。如果臨時文件不是用戶特定 臨時路徑提供了路徑到用戶的個人臨時目錄

,你可以使用C:\ TEMP

編輯:如果您是使用用戶特定位置,我強烈建議您使用環境變量(XP和2000上的USERPATH),而不是對路徑進行硬編碼。

-Waldo

P.S.謝謝你問這個。我看到來自Waaaay的太多應用程序的不良行爲。 C:驅動器的根本不在於你應該傾倒東西的地方!至少,(測試是否存在,如果有必要,創建)使用C:\ Temp。

+1

國際海事組織,這需要downvote邊界。舉例來說,在Vista或更新的版本中,通常不會有'[drive:\ Dcouments and Settings']。 USERPROFILEPATH是*更好的*,但仍然很不理想(因爲使用可以編輯,刪除等環境變量,所以太容易搞砸了)。 – 2010-08-24 20:54:29

+0

好的,這很公平。但是,在XP和更低(粗略猜測〜= 60%的企業桌面)時,它是適用的。 如果我有一個Vista或Win7機器,我會包括新的答案。 我將編輯我的評論,以推薦使用環境變量而不是硬編碼路徑。 – gWaldo 2010-08-24 21:05:55

相關問題