Не могу получить доступ к переменной среды Windows с помощью C # - PullRequest
3 голосов
/ 17 сентября 2009

Я создал установщик, используя WiX. Единственное, что делает установщик, - это устанавливает переменную среды PLUGIN_DIRECTORY (она находится на системном уровне).

В некотором коде C #, который я написал, мне нужно получить доступ к этой переменной, чтобы я мог просматривать определенный каталог. Я делаю это с помощью следующего кода:

FileSystemWatcher water = new FileSystemWatcher();
watcher.Path = Environment.GetEnvironmentVariable("PLUGIN_DIRECTORY") + "\\";

К сожалению (и когда я отлаживаю), все, что установлено для watcher.Path - "\".

Нужно ли перезагружаться после установки? Я не понимаю, почему, поскольку переменная уже установлена. Любые другие предложения? Я не получаю никаких ошибок - просто не смотрю правильный путь.

Спасибо

Ответы [ 4 ]

9 голосов
/ 17 сентября 2009

Если у вас была визуальная студия, открытая, когда вы создали переменную окружения, тогда я не знаю, подхватит ли она ее, пока вы не закроете и не перезапустите VS. Когда процесс запускается, он наследует переменные среды от своего родительского процесса. Я не совсем уверен, как VS запускает исполняемый файл после того, как вы его построите, но, вероятно, это подпроцесс, и в результате он не получает новую переменную среды.

0 голосов
/ 23 июня 2010

Системная среда наследуется от родительского, после обновления другой процесс не может быть распознан.

Мы можем обновить среду процесса путем загрузки среды с «машины» и сохранить в «процессе».

string SysEnvir = System.Environment.GetEnvironmentVariable("Path", EnvironmentVariableTarget.Machine);

System.Environment.SetEnvironmentVariable("Path", SysEnvir, EnvironmentVariableTarget.Process);
0 голосов
/ 17 сентября 2009

Извините, если я ужасно неправ, я не могу это подтвердить, так как у меня не установлен компилятор. Но вы можете попробовать использовать: watcher.Path = Environment.GetEnvironmentVariable ("% PLUGIN_DIRECTORY%") + "\";

То есть% PLUGIN_DIRECTORY% вместо простого PLUGIN_DIRECTORY.

Надеюсь, это помогло

0 голосов
/ 17 сентября 2009

Просто чтобы быть уверенным, PLUGIN_DIRECTORY имеет что-нибудь установленное после запуска установщика?

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