Переменные окружения и работа с ними

Я уже несколько раз ссылался на такую функцию, как getenv. Достаточно простая функция, но у нее есть свои особенности.

Все, что написано ниже, касается AutoCAD для Windows (т.к. у меня нет MacOS ни в каком виде, то проверить состояние дел для этой ОС я не могу).

Если мы работаем внутри AutoCAD, то все переменные окружения (т.н. Environment Variables) можно поделить на 2 класса: переменные для Windows и переменные для AutoCAD.

Перечень переменных для Windows получить достаточно просто: вызываем окно cmd (Win+R, cmd) и в ней вбиваем строку set, жмем Enter. Получим перечень вида (приведен пример для Windows 7 Prof x64):

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
ALLUSERSPROFILE
AMDAPPSDKROOT
APPDATA
CommonProgramFiles
CommonProgramFiles(x86)
CommonProgramW6432
COMPUTERNAME
ComSpec
DXROOT
FP_NO_HOST_CHECK
HOMEDRIVE
HOMEPATH
ILBDIR
LOCALAPPDATA
LOGONSERVER
NUMBER_OF_PROCESSORS
OS
Path
PATHEXT
PROCESSOR_ARCHITECTURE
PROCESSOR_IDENTIFIER
PROCESSOR_LEVEL
PROCESSOR_REVISION
ProgramData
ProgramFiles
ProgramFiles(x86)
ProgramW6432
PSModulePath
PUBLIC
SESSIONNAME
SystemDrive
SystemRoot
TEMP
TMP
USERDNSDOMAIN
USERDOMAIN
USERNAME
USERPROFILE
windir

В любой момент из-под лиспа мы можем обратиться к любой из этих переменных. При этом регистр имени переменной никакой роли не играет: (getenv "TEMP") вернет то же самое, что (getenv "temp").

Что каждая из этих строк означает - расписывать не буду, все есть и в справке по Windows, и так углядеть можно.

Но есть и вторая, более интересная часть переменных окружения - переменные для AutoCAD. Их перечень можно посмотреть в реестре, в ветке HKEY_CURRENT_USER\Software\Autodesk\AutoCAD\RXX.X\ACAD-YYYY:YYY\Profiles\ИмяПрофиля\General. И тут уже надо будет учитывать регистр символов.

Например, есть в указанной ветке реестра ключ ACAD (хранит пути поиска для AutoCAD). Так вот, (getenv "ACAD") вернет вполне нормальное значение, а (getenv "acad") - пустое значение (nil).

При работе приходится это постоянно учитывать...



Комментарии

Есть 1 комментарий к “Переменные окружения и работа с ними”
  1. Кулик Алексей aka kpblc пишет:

    Вот уж не думал, что развернутся такие баталии...

Поделитесь своим мнением


Я не робот.