Переменная окружения PATH, содержащая другие переменные окружения - PullRequest
0 голосов
/ 14 декабря 2018

Я знаю, что могу запросить любую переменную среды, вызвав:

System.Environment.GetEnvironmentVariable();

Теперь, например, мне нужно значение windir, то есть %SystemRoot%.Однако функция интерпретирует его как C:\Windows (что является значением SystemRoot).

Я получаю то же поведение, запрашивая ключ реестра с помощью Registry.LocalMachine.OpenSubKey()

Есть лиспособ получить имена переменных из переменных среды вместо их путей?(Мне это нужно для того, чтобы легко переключаться между несколькими установленными версиями SDK, с которыми я работаю.)

Ответы [ 2 ]

0 голосов
/ 14 декабря 2018

Насколько я знаю, единственный способ сделать это - прочитать переменную среды непосредственно из реестра и указать, что вы не хотите, чтобы она была расширена:

registryKey.GetValue("PATH", "", RegistryValueOptions.DoNotExpandEnvironmentNames);

См. документы для RegistryValueOptions .

0 голосов
/ 14 декабря 2018

Тот факт, что %WINDIR% и %SYSTEMROOT% имеют одинаковое значение, является простым совпадением.Очевидно, почему они будут, но они все еще независимые переменные.Изменение одного не приведет к изменению другого.

Вы должны будете написать что-то вручную, чтобы найти другие переменные среды с тем же значением и заменить любую переменную, которую вы имели в виду, например, %SYSTEMROOT%.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...