На какие каталоги указывают различные специальные папки приложений в WindowsXP и Windows Vista - PullRequest
25 голосов
/ 23 марта 2010

А именно у меня есть:

  • Environment.SpecialFolder.ApplicationData
  • Environment.SpecialFolder.CommonApplicationData
  • Environment.SpecialFolder.LocalApplicationData

Мне неясно, на что они указывают в Windows XP и / или Windows Vista.

На данный момент я обнаружил, что ApplicationData указывает на папку ApplicationData для текущего пользователя в XP и папку данных перемещаемого приложения в Vista.

Я также хотел бы знать, существуют ли общие руководящие указания относительно того, когда и когда использовать.

Ответы [ 3 ]

28 голосов
/ 23 марта 2010

На этот вопрос нет однозначного ответа. На самом деле, это именно , почему эти "SpecialFolder" определены. Вы используете их вместо жестко закодированного пути.

Environment.SpecialFolder.ApplicationData является наиболее распространенным. В этой папке хранятся пользовательские данные, не связанные с временными данными, кроме пользовательских документов. Типичным примером может служить файл настроек или конфигурации.

Environment.SpecialFolder.CommonApplicationData похож, но доступен для всех пользователей. Вы можете использовать это для хранения шаблонов документов, например.

Environment.SpecialFolder.LocalApplicationData - альтернатива без роуминга для ApplicationData. Таким образом, вы никогда не будете хранить важные данные там. Однако, поскольку он не в роуминге, он является хорошим местом для временных файлов, кэшей и так далее. Обычно это на локальном диске.

14 голосов
/ 23 марта 2010

Это легко проверить. Use Environment.GetFolderPath(...); и используйте MessageBox или Console.Write, и он покажет вам, куда он указывает. Вам нужно только создать простое приложение, которое будет отображать пути для вас, и запустить его под Windows XP и Windows Vista.

using System;

namespace EnvironmentCheck
{
    class Program
    {
        static void Main(string[] args)
    {
        Console.Write(Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData) + "\n");
        Console.Write(Environment.GetFolderPath(Environment.SpecialFolder.CommonApplicationData)+ "\n");
        Console.Write(Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData)+ "\n");
    }
}
}

Мои результаты на Win 7 x64

C: \ Users \ MyUserName \ AppData \ Roaming
C: \ ProgramData
C: \ Users \ myUsername \ AppData \ Local

3 голосов
/ 04 июня 2015

Для тех, кто хочет знать, что эти специальные папки оценивают в Windows XP, но не имеет XP для запуска, вот что я получаю при запуске кода @ MadBoy:

ApplicationData:

C:\Documents and Settings\YourAccountHere\Application Data

CommonApplicationData:

C:\Documents and Settings\All Users\Application Data

LocalApplicationData:

C:\Documents and Settings\YourAccountHere\Local Settings\Application Data
...