GetEnvironment Variable позволяет выявлять присутствие той или иной переменной окружения и определять ее значение:
DWORD GetEnvironmentVariable(PCTSTR pszName, PTSTR pszValue, DWORD cchValue);
При вызове GetEnvironmentVariable параметр pszName должен указывать на имя переменной, pszValue — на буфер, в который будет помещено значение переменной, а в cchValue следует сообщить размер буфера в символах. Функция возвращает либо количество символов, скопированных в буфер, либо 0, если ей не удалось обнаружить переменную окружения с таким именем.
Кстати, в реестре многие строки содержат подставляемые части, например.
%USERPROFILE%\My Documents
Часть, заключенная в знаки процента, является подставляемой. В данном случае в строку должно быть подставлено значение переменной окружения USERPROFILE. Например, эта переменная может выглядеть так:
C:\Documents and Settings\Administrator
После подстановки переменной в строку реестра получим
C:\Documents and Settings\Admimstrator\My Documents
Поскольку такие подстановки делаются очень часто, в Windows есть функция ExpandEnvironmentStrings.
DWORD ExpandEnvironmentStrings(PCTSTR pszSrc, PTSTR pszDst, DWORD nSize);
|
|
Параметр pszSrc принимает адрес строки, содержащей подставляемые части, а параметр pszDsf — адрес буфера, в который записывается развернутая строка. Параметр nSize определяет максимальный размер буфера в символах.
Наконец, функция SetEnvironmentVariable позволяет добавлять, удалять и модифицировать значение переменной.
DWORD SetEnvironmentVariable(
PCTSTR pszName,
PCTSTR pszValue);
Она устанавливает ту переменную, на чье имя указывает параметр pszName, и присваивает ей значение, заданное параметром pszValue. Если такая переменная уже существует, функция модифицирует ее значение. Если же spszValue содержится NULL, переменная удаляется из блока.
Для манипуляций с блоком переменных окружения всегда используйте именно эти функции. Строки в блоке переменных нужно отсортировать в алфавитном порядке по именам переменных (тогда GetEnvironmentVariable быстрее находит нужные переменные), a SetEnvironmentVariable как раз и следит за порядком расположения переменных.