2012-03-05 72 views
-2

我目前知道的方法有兩種:如何找到%APPDATA%目錄?

Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData) 

Application.UserAppDataPath 

難道他們都一樣嗎?我應該使用一個嗎?請提供一些事實以備份您的答案。

回答

2

Application.UserAppDataPath返回BasePath \ CompanyName \ ProductName \ ProductVersion,其中BasePath是ApplicationData目錄。所以如果你不想要所有額外的子目錄,你應該只使用Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData)

2

應用程序是WinForms的類。所以,如果你的應用程序不是WinForms應用程序,你就不能使用Application.UserAppDataPath。此外,如果反編譯System.Windows.Forms程序集,則可以看到Application.UserAppDataPath屬性使用Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData)方法。

public static string UserAppDataPath 
{ 
    get 
    { 
    try 
    { 
     if (ApplicationDeployment.IsNetworkDeployed) 
     { 
     string str = AppDomain.CurrentDomain.GetData("DataDirectory") as string; 
     if (str != null) 
      return str; 
     } 
    } 
    catch (Exception ex) 
    { 
     if (System.Windows.Forms.ClientUtils.IsSecurityOrCriticalException(ex)) 
     throw; 
    } 
    return Application.GetDataPath(Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData)); 
    } 
} 
+0

不完全一樣,因爲它在System.Windows.Forms.dll中,它隨.NET的各種風格一起安裝。在某些情況下,您*無法使用它(例如silverlight),但在這些情況下,其他選項也不可用。 – Will 2012-03-05 17:05:44