如何查找%APPDATA%目录



我目前知道两种方法:

Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData)

Application.UserAppDataPath

它们都一样吗?我应该用一个而不是另一个吗?请提供一些事实来支持你的回答。

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

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));
  }
}

最新更新