我目前知道的方法有兩種:如何找到%APPDATA%目錄?
Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData)
和
Application.UserAppDataPath
難道他們都一樣嗎?我應該使用一個嗎?請提供一些事實以備份您的答案。
我目前知道的方法有兩種:如何找到%APPDATA%目錄?
Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData)
和
Application.UserAppDataPath
難道他們都一樣嗎?我應該使用一個嗎?請提供一些事實以備份您的答案。
Application.UserAppDataPath
返回BasePath \ CompanyName \ ProductName \ ProductVersion,其中BasePath是ApplicationData目錄。所以如果你不想要所有額外的子目錄,你應該只使用Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData)
。
應用程序是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));
}
}
不完全一樣,因爲它在System.Windows.Forms.dll中,它隨.NET的各種風格一起安裝。在某些情況下,您*無法使用它(例如silverlight),但在這些情況下,其他選項也不可用。 – Will 2012-03-05 17:05:44