16.35.31. Макросы, допустимые в именах файлов

%WinDir% - путь к папке Windows (без \ на конце), аналог одноименной переменной окружения Windows
%SystemRoot% - путь к папке Windows (без \ на конце), аналог одноименной переменной окружения Windows
%System32% - заменяется на путь к папке System/System32 (без \ на конце)
%SysDisk% - системный диск в виде "X:" (без \)
%Tmp% - путь к папке для временных файлов
%PF% - путь к папке Program Files на системном диске (без \ на конце)
 
Начиная с версии 4.26 поддерживаются:
%SYSTEMDRIVE% - синоним %SysDisk%, системный диск в виде "X:",  аналог одноименной переменной окружения Windows
%Personal% - путь к папке "Мои документы" текущего пользователя
%ProfileDir% - путь к папке, в которой размещаются профили пользователей
%USERPROFILE% - путь к папке с профилем текущего пользователя (берется из одноименной переменной окружения)
 
Начиная с версии 4.32 поддерживаются:
%allusersprofile% - путь к папке с профилем AllUsers (без \ на конце)
%AppData% - путь к папке Application Data текущего пользователя (без \ на конце)
%LocalSettings% - путь к папке Local Settings текущего пользователя (без \ на конце)
 
Начиная с версии 5.0 поддерживаются
%PF32% - путь к папке Program Files (x86)
 
На заметку:
Регистр символов макроса не учитывается, к примеру %SysDisk%, %SYSDISK% и %sysdisk% эквивалентны.
 
Примеры:
 
begin
  AddToLog(NormalDir('%LocalSettings%'));
end.
 
Пример вывода в протокол данных по операционной системе и значения всех макросов:
 
procedure TestPath(S : string);
begin
 AddToLog(S + ' = "' + NormalDir(S)+'"');
end;
 
// Добавление в протокол данных о версии ОС
procedure AddToLogVerionInfo;
var
 S : string;
begin
 S := RegKeyStrParamRead('HKEY_LOCAL_MACHINE','SOFTWARE\Microsoft\Windows NT\CurrentVersion',
                         'ProductName');
 S := S + ', Build='+
      RegKeyStrParamRead('HKEY_LOCAL_MACHINE','SOFTWARE\Microsoft\Windows NT\CurrentVersion',
                         'CurrentBuildNumber');
 S := S + ', SP="'+
      RegKeyStrParamRead('HKEY_LOCAL_MACHINE',
                         'SOFTWARE\Microsoft\Windows NT\CurrentVersion',
                         'CSDVersion')+'"';
 AddToLog('$AVZ0101: '+S);
 // Проверка, не работаем ли мы из терминальной сессии  - это может повлиять на пути !
 if ISNT then
  if GetEnvironmentVariable('SESSIONNAME') <> '' then
   if UpperCase(Trim(GetEnvironmentVariable('SESSIONNAME'))) <> 'CONSOLE' then
    AddToLog('$AVZ1172 ('+GetEnvironmentVariable('SESSIONNAME')+')');
end;
 
 
 
begin
 ClearLog;
 AddToLogVerionInfo;
 TestPath('%WinDir%');
 TestPath('%SystemRoot%');
 TestPath('%System32%');
 TestPath('%SysDisk%');
 TestPath('%Tmp%');
 TestPath('%PF%');
 
 TestPath('%SYSTEMDRIVE%');
 TestPath('%personal%');
 TestPath('%profiledir%');
 TestPath('%userprofile%');
 
 TestPath('%allusersprofile%');
 TestPath('%AppData%');
 TestPath('%localsettings%');
end.
 
 
См. также GetEnvironmentVariable