2009-01-31 70 views
12

有獲取應用程序路徑數據目錄的幾種可能的方式:使用%APPDATA%環境變量 獲取「應用程序數據」目錄路徑的最佳途徑?

  • 調用SHGetFolderPath

    • CSIDL_APPDATA

    什麼是獲取路徑的最佳途徑從一個程序內?當我使用環境變量時是否有任何問題?

    哪種方法在XP,Vista和即將推出的版本中最安全?

  • 回答

    12

    我建議致電SHGetFolderPath()是最合適的,便攜的方法;諸如讀取環境變量或者(更糟糕的)嘗試從註冊表中提取它的替代方法可能會在未來使您受到影響。

    Raymond Chen has an article解釋了爲什麼從註冊表中拉出這樣的路徑是一個壞主意。在Python

    string appDataPath = Environment.SpecialFolder.ApplicationData; 
    
    +1

    我讀了一篇文章,我之前我做了什麼文章告訴我*不*做:) – 2009-01-31 16:54:52

    0

    如果你在.NET編程,你可以使用這個在ctypes.windll.shell32.SHGetFolderPathW返回一個unicode字符串的Unicode文件路徑的情況下,而os.environ['APPDATA']返回一個字節的字符串。

    +0

    SpecialFolder.ApplicationData是一個枚舉,而不是路徑。使用Environment.GetFolderPath,如@ jMM的答案中所示 – JulianM 2010-09-02 02:49:28

    12
    string appDataPath = 
    Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData); 
    

    你需要使用GetFolderPath方法獲得實際的路徑Environment.SpecialFolder.ApplicationData只是一個枚舉。

    0

    如果有人想知道,在Ruby中的命令將如下所示:

    appDataPath = ENV['APPDATA']