Подтвердить что ты не робот

Каковы эти странные переменные среды?

Я использую GetEnvironmentString() для получения переменных окружения программы.

Каждая программа имеет такой результат в первом:

=::=::\

Я не знаю, что это значит?

Вот код:

LPWCH lpEnvString=GetEnvironmentStringsW();
 LPWSTR lpszVariable=(LPWSTR)lpEnvString;
 while (*lpszVariable)
 {
     wprintf(L"%s\n",lpszVariable);
     lpszVariable+=wcslen(lpszVariable)+1;
 }
 FreeEnvironmentStringsW(lpEnvString);

Также, если мы начнем перечислять такие переменные, мы увидим такие вещи, как:

=::=::\
=C:=C:\Users\username\value
=ExitCode=00000001
ALLUSERSPROFILE=C:\ProgramData
APPDATA=C:\Users\artik\AppData\Roaming
CommonProgramFiles=C:\Program Files (x86)\Common Files
CommonProgramFiles(x86)=C:\Program Files (x86)\Common Files
CommonProgramW6432=C:\Program Files\Common Files
...

С другой стороны, getenv("=ExitCode") или getenv("=C:") возвращает NULL.

Можете ли вы предоставить надлежащую документацию по этой "функции", например getenv() игнорирует такие строки и как следует обрабатывать такие значения?

4b9b3361

Ответ 1

Это остатки от cmd.exe, имитирующие обработку каталога ms-dos, в основном они мало полезны и более архаичны, чем что-либо. По существу, он отслеживает текущий каталог текущего диска и хранится в качестве переменной среды, чтобы легко перейти к другим процессам.