-2

我目前知道两种方法:

Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData)

Application.UserAppDataPath

他们都一样吗?我应该使用其中一个吗?请提供一些事实来支持您的答案。

4

2 回答 2

2

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

于 2012-03-05T04:17:38.017 回答
2

Application 是 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));
  }
}
于 2012-03-05T04:29:28.513 回答