Delphi-Help

Главная Статьи Windows Как узнать путь к каталогам Windows?

Как узнать путь к каталогам Windows?

Оцените материал
(0 голосов)


Как узнать путь к каталогам Windows?

Способ первый

uses
  ..., Registry;
 
procedure TForm1.Button1Click(Sender: TObject);
var
  reg: TRegistry;
  ts: TStrings;
  i: integer;
begin
   reg := TRegistry.Create;
   reg.RootKey := HKEY_CURRENT_USER;
   reg.OpenKey( 'Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders', false );
   ts := TStringList.Create;
   reg.GetValueNames( ts );
   for i := 0 to ts.Count-1 do
      Memo1.Lines.Add( ts.Strings[i] + ' = ' + reg.ReadString( ts.Strings[i] ) );
   ts.Free;
   reg.CloseKey;
   reg.Free;
end;

Способ второй

uses
  ..., ShlObj;
 
function GetSpecialPath( CSIDL: Word ): PChar;
var
  s: string;
begin
   SetLength( s, MAX_PATH );
   if not SHGetSpecialFolderPath( 0, PChar( s ), CSIDL, false ) then
      s := '';
   Result := PChar( s );
end;
 
// Функции нужно передать id папки, путь которой хотим получить.
// Нужно учитывать, что не все id будуть работать в разных версиях Windows.
// Например папки 'Documents & Settungs' нет в 98-х и бессмысленно
// пытаться получить путь к ней.
// Далее идет список id:
{
  // Следующие идентификаторы имеются в модуле ShlObj:
  CSIDL_DESKTOP                       = $0000;
  // Виртуальный каталог, представляющий Рабочий стол. (Корень в проводнике)
  CSIDL_INTERNET                      = $0001;
  // Виртуальный каталог для Internet Explorer.
  CSIDL_PROGRAMS                      = $0002;
  // Меню Пуск -> Программы
  CSIDL_CONTROLS                      = $0003;
  // Виртуальный каталог, содержащий иконки пунктов панели управления
  CSIDL_PRINTERS                      = $0004;
  // Виртуальный каталог, содержащий установленные принтеры
  CSIDL_PERSONAL                      = $0005;
  // Виртуальный каталог, представляющий папку "Мои документы"
  // До Vista ссылался на какталог "Мои документы" на жёстком диске
  CSIDL_FAVORITES                     = $0006;
  // Избранное. (обычно C:\Documents and Settings\username\Favorites)
  CSIDL_STARTUP                       = $0007;
  // Пуск -> Программы -> Автозагрузка
  CSIDL_RECENT                        = $0008;
  // Недавние документы (обычно C:\Documents and Settings\username\My Recent Documents
  // Для добавления ссылки документа используйте SHAddToRecentDocs
  CSIDL_SENDTO                        = $0009;
  // Папка, содержащая ярлыки меню "Отправить" (Sent to...) (обычно C:\Documents and Settings\username\SendTo)
  CSIDL_BITBUCKET                     = $000a;
  // Виртуальный каталог, содержащий файлы в корзине текущего пользователя
  CSIDL_STARTMENU                     = $000b;
  // Элементы меню Пуск текущего пользователя (обычно C:\Documents and Settings\username\Start Menu)
  CSIDL_DESKTOPDIRECTORY              = $0010;
  // Рабочий стол текущего пользователя (обычно C:\Documents and Settings\username\Desktop)
  CSIDL_DRIVES                        = $0011;
  // Виртуальный каталог, представляющий папку "Мой компьютер"
  CSIDL_NETWORK                       = $0012;
  // Виртуальный каталог, представляющий "Сетевое окружение"
  CSIDL_NETHOOD                       = $0013;
  // Папка "My Nethood Places" (обычно C:\Documents and Settings\username\NetHood)
  // В неё ссылки на избранные расшаренные ресурсы
  CSIDL_FONTS                         = $0014;
  // Папка, содержащая установленные шрифты. (обычно C:\Windows\Fonts)
  CSIDL_TEMPLATES                     = $0015;
  // Шаблоны документов. (Обычно Settings\username\Templates)
  CSIDL_COMMON_STARTMENU              = $0016;
  // Элементы меню Пуск для всех пользователей. (обычно C:\Documents and Settings\All Users\Start Menu)
  // Константы, начинающиеся на CSIDL_COMMON_ существуют только в NT версиях
  CSIDL_COMMON_PROGRAMS               = $0017;
  // Меню Пуск -> программы для всех пользователей (обычно C:\Documents and Settings\All Users\Start Menu\Programs)
  CSIDL_COMMON_STARTUP                = $0018;
  // Меню Пуск -> Программы -> Автозагрузка для всех пользователей (обычно C:\Documents and Settings\All Users\Start Menu\Programs\Startup)
  CSIDL_COMMON_DESKTOPDIRECTORY       = $0019;
  // Элементы Рабочего стола для всех пользователей (обычно C:\Documents and Settings\All Users\Desktop)
  CSIDL_APPDATA                       = $001a;
  // Папка, в которой рограммы должны хранить свои данные(C:\Documents and Settings\username\Application Data)
  CSIDL_PRINTHOOD                     = $001b;
  // Установленные принтеры. (обычно C:\Documents and Settings\username\PrintHood)
  CSIDL_ALTSTARTUP                = $001d;         // DBCS
  // user's nonlocalized Startup program group. Устарело.
  CSIDL_COMMON_ALTSTARTUP         = $001e;         // DBCS
  // Устарело
  CSIDL_COMMON_FAVORITES          = $001f;
  // Ссылки "Избранное" для всех пользователей
  CSIDL_INTERNET_CACHE            = $0020;
  // Временные Internet файлы (обычно C:\Documents and Settings\username\Local Settings\Temporary Internet Files)
  CSIDL_COOKIES                   = $0021;
  // Папка для хранения Cookies (обычно C:\Documents and Settings\username\Cookies)
  CSIDL_HISTORY                   = $0022;
  // Хранит ссылки интернет истории IE
 
  // Следующих идентификаторов нет в ShlObj:
  CSIDL_ADMINTOOLS                = $30;
  // Административные инструменты текущего пользователя (например консоль MMC). Win2000+
  CSIDL_CDBURN_AREA               = $3b;
  // Папка для файлов, подготовленных к записи на CD/DVD
  // (Обычно C:\Documents and Settings\username\Local Settings\Application Data\Microsoft\CD Burning)
  CSIDL_COMMON_ADMINTOOLS         = $2f;
  // Папка, содержащая инструменты администрирования
  CSIDL_COMMON_APPDATA            = $23;
  // Папака AppData для всех пользователей. (обычно C:\Documents and Settings\All Users\Application Data)
  CSIDL_COMMON_DOCUMENTS          = $2e;
  // Папка "Общие документы" (обычно C:\Documents and Settings\All Users\Documents)
  CSIDL_COMMON_TEMPLATES          = $2d;
  // Папка шаблонов документов для всех пользователей (Обычно C:\Documents and Settings\All Users\Templates)
  CSIDL_COMMON_MUSIC              = $35;
  // Папка "Моя музыка" для всех пользователей. (обычно C:\Documents and Settings\All Users\Documents\My Music)
  CSIDL_COMMON_PICTURES           = $36;
  // Папка "Мои рисунки" для всех пользователей. (обычно C:\Documents and Settings\All Users\Documents\My Pictures)
  CSIDL_COMMON_VIDEO              = $37;
  // Папка "Моё видео" для всех пользователей (C:\Documents and Settings\All Users\Documents\My Videos)
  CSIDL_COMPUTERSNEARME           = $3d;
  // Виртуальная папка, представляет список компьютеров в вашей рабочей группе
  CSIDL_CONNECTIONS               = $31;
  // Виртуальная папка, представляет список сетевых подключений
  CSIDL_LOCAL_APPDATA             = $1c;
  // AppData для приложений, которые не переносятся на другой компьютер (обычно C:\Documents and Settings\username\Local Settings\Application Data)
  CSIDL_MYDOCUMENTS               = $0c;
  // Виртуальный каталог, представляющий папку "Мои документы"
  CSIDL_MYMUSIC                   = $0d;
  // Папка "Моя музыка"
  CSIDL_MYPICTURES                = $27;
  // Папка "Мои картинки"
  CSIDL_MYVIDEO                   = $0e;
  // Папка "Моё видео"
  CSIDL_PROFILE                   = $28;
  // Папка пользователя (обычно C:\Documents and Settings\username)
  CSIDL_PROGRAM_FILES             = $26;
  // Папка Program Files (обычно C:\Program Files)
  CSIDL_PROGRAM_FILESX86          = $2a;
  //
  CSIDL_PROGRAM_FILES_COMMON      = $2b;
  // Папка Program Files\Common (обычно C:\Program Files\Common)
  CSIDL_PROGRAM_FILES_COMMONX86   = $2c;
  //
  CSIDL_RESOURCES                 = $38;
  // Папка для ресерсов. Vista и выше (обычно C:\Windows\Resources)
  CSIDL_RESOURCES_LOCALIZED       = $39;
  //
  CSIDL_SYSTEM                    = $25;
  // Папака System (обычно C:\Windows\System32 или C:\Windows\System)
  CSIDL_SYSTEMX86                 = $29;
  //
  CSIDL_WINDOWS                   = $24;
  // Папка Windows. Она же %windir% или %SYSTEMROOT% (обычно C:\Windows)
}
Прочитано 5913 раз

Авторизация



Счетчики