我目前知道的方法有两种:如何找到%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