Приветствую всех.
Руслан пишет:
> Поскольку значения переменных окружения
> хранятся в реестре, можно брать их оттуда напрямую.
В реестре, конечно, много чего можно найти (в том числе и имя последнего открытого
в WordPad файла :)).
Однако в отношении переменных окружения есть несколько подводных грабель, из-за
которых от этого способа лучше отказаться (разумеется, если есть возможность
использовать другой способ).
Разные переменные окружения расположены в разных разделах реестра, т.е. всякий
раз придется править имя раздела и ветки реестра, если нужно взять другую переменную
окружения.
Вы вот сами (вместо того, чтобы поручить это дело операционной системе), совершили
неочевидный переход по реестру, чтобы найти ключ с нужным значением (причем человек,
не знающий реестра, может и не понять как %WINDIR% связана с %SystemRoot%).
В реестре располагаются не все переменные окружения, доступные в run-time
Кроме того, процесс может сам добавлять или удалять переменные окружения.
С одноименными переменными из разных иерархических уровней тоже не все гладко.
> Но надо сказать отдельное "дзякуй" разработчикам из FS,
> упорно игнорирующим баг функции GetRegistryEntryString.
Чтобы обойти этот сломаный зуб JAWS, ваш пример очень даже подходит, но для работы
с переменными окружения -- не очень.
Успехов. Анатолий.