Как найти каталог% APPDATA%? - PullRequest
       8

Как найти каталог% APPDATA%?

0 голосов
/ 05 марта 2012

В настоящее время я знаю два метода:

Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData)

и

Application.UserAppDataPath

Они оба одинаковые? Должен ли я использовать один над другим? Пожалуйста, предоставьте некоторые факты, подтверждающие ваши ответы.

Ответы [ 2 ]

2 голосов
/ 05 марта 2012

Приложение класса 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));
  }
}
2 голосов
/ 05 марта 2012

Application.UserAppDataPath возвращает BasePath \ CompanyName \ ProductName \ ProductVersion, где BasePath - это каталог ApplicationData.Поэтому, если вам не нужны все дополнительные подкаталоги, вы должны просто использовать Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...