Почему удаление переменной окружения с помощью reg delete HKCU\Environment /F /V TestVar
в Windows 7 Professional удаляет ее из реестра, но переменная все еще существует?Удаление переменных окружения не работает
Вот подробности: Я создал следующие 3 .cmd
файлы:
Проверить variable.cmd
echo TestVar = %TestVar%
pause
Набор variable.cmd
setx TestVar 123
pause
Удалить переменную .cmd
reg delete HKCU\Environment /F /V TestVar
pause
Тогда я выполните следующие действия (двойной щелчок, чтобы убедиться, что я начинаю новую сессию каждый раз):
- Двойной щелчок по
Check variable.cmd
и я вижу, чтоTestVar
не существует - Double нажмите на
Set variable.cmd
, и он говорит:SUCCESS: Specified value was saved.
- Двойной щелчок на
Check variable.cmd
и показывает значение переменной. Хорошо! - Двойной щелчок по
Delete variable.cmd
и говоритThe operation completed successfully.
- Двойной щелчок по
Check variable.cmd
и он все еще показывает значение переменной. Плохо! - Нажмите на меню Пуск, введите
environment
, нажмите наEdit environment variables for your account
, чтобы открыть диалоговое окноEnvironment Variables
, нажмитеOK
, ничего не меняя - Двойной щелчок по
Check variable.cmd
и переменная больше не существует
я могу найти значение в реестре после шага 2, я не могу найти его после шага 4, но шаг 5 все еще находит его. И даже если я ничего не изменю, шаг 6 действительно удаляет переменную.
Необходимо передать сообщение, чтобы уведомить приложения (в данном случае проводник Windows) об изменении. См. Http://stackoverflow.com/a/5246097/886887 –
@HarryJohnston: Как транслировать сообщение из пакетного файла? – stenci