-2

私は現在2つの方法を知っています:

Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData)

Application.UserAppDataPath

どちらも同じですか?どちらか一方を使用する必要がありますか?あなたの答えを裏付けるためにいくつかの事実を提供してください。

4

2 に答える 2

2

Application.UserAppDataPathBasePath \ 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 に答える