Удалить переменную среды программно - PullRequest
6 голосов
/ 08 июля 2010

Мне нужно написать модульный тест для некоторого кода C ++, который проверяет наличие переменной среды. Я использую MSVS 2008 и gtest в качестве моей платформы. Я добавляю переменную окружения с помощью putenv, проверяю переменную окружения с помощью getevn, но не могу понять, как ее удалить, чтобы никакой другой тест ее не увидел. Я понимаю, что это, вероятно, легко, но я не могу найти ответ в Интернете. Спасибо

Ответы [ 4 ]

11 голосов
/ 08 июля 2010

Вызов putenv, снова указав "SOME_VAR=" в качестве параметра, удалит переменную среды SOME_VAR.Кстати, Microsoft рекомендует использовать _putenv, так как putenv устарела.

2 голосов
/ 08 июля 2010

Вы всегда можете запустить / выполнить подпроцесс, чтобы выполнить только тестирование putenv / getenv, а затем, когда он завершится, вокруг не останется никакой случайной среды.

2 голосов
/ 08 июля 2010

Как насчет установки переменной env в пустую строку?

Из cmd.exe это работает:

set SOMEVAR=something
echo %SOMEVAR%
set SOMEVAR=
echo %SOMEVAR%

Где последний показывает, что он был удален.

0 голосов
/ 08 июля 2010

вы можете использовать функцию unsetenv.

Если vc2008 не имеет этой функции, вы можете напрямую получить доступ к среде, используя getenv_s, и удалить запись вручную, имитируя unsetenv.

...