2008-09-25 36 views
14

什麼地方存儲的程序數據文件對每個用戶都是一樣的,但必須是可寫入的程序? MS Windows XP上的等效位置是什麼?我讀過C:\ ProgramData在普通用戶安裝後不可寫入。真的嗎?我如何使用Platform SDK以編程方式檢索該目錄?Vista和ProgramData

回答

8

SHGetFolderPath()與CSIDL的CSIDL_COMMON_APPDATA。

http://msdn.microsoft.com/en-us/library/bb762181(VS.85).aspx

更多如果您需要在批處理文件的路徑,你也可以使用%ALLUSERSPROFILE%環境變量。

+1

我相信這實際上是%ALLUSERSPROFILE%,S – 2009-05-03 21:53:23

+0

錯誤,是的,這是正確的,我錯過了S. :-) – 2009-05-05 20:23:27

1

您可以使用:

CString strPath; 
::SHGetSpecialFolderPath(NULL, strPath.GetBuffer(1024), CSIDL_COMMON_APPDATA, FALSE); 
1

Raymond Chen's article on this specific question

總之,您要求安全漏洞

+3

該應用程序不會被管理員使用,並且每個可以登錄到計算機的人都可信在我們正在處理的公司中。因此,在用戶之間共享數據不是一個安全問題。在Vista上,可以在公用文件夾中共享圖片和電影。 Progams也應該有這個。 – frast 2008-09-25 11:47:08

7

還有就是這裏的不同選項的大彙總:http://blogs.msdn.com/cjacks/archive/2008/02/05/where-should-i-write-program-data-instead-of-program-files.aspx

我在哪裏應該寫程序數據 相反的程序文件?

常見的應用程序代碼更新 這樣的:「我以前寫 文件,程序文件的應用程序這感覺就像 良好的地方把它作爲任何 其他它有我的應用程序的名稱上 它了。 ,因爲我的網友們 管理員,它工作得很好。但是現在我看到 這可能不是那麼大的地方 堅持的東西,因爲我曾經以爲, 因爲與UAC甚至管理員 運行與標準用戶享有特權 大部分時間。那麼,我應該在哪裏 把我的文件呢?「