Я установил переменную окружения из моего пакетного скрипта:
reg add "HKEY_CURRENT_USER\Environment" /v TOOL_CHAIN_PATH /t REG_SZ /d C:\Users\MClarkson\Documents\svn\tool-chain /f
Пакетный скрипт запускается в режиме повышенных разрешений с использованием следующего фрагмента:
rem Make sure we are running in Administrator mode
reg add HKLM\Software\UDP\WindowsInstall\aad3a310a315f101030965e3da3e15b6 /v Elevated /t REG_DWORD /d 1 /f > nul 2>&1
if %ERRORLEVEL%==1 (
echo You must run %~nx0 in elevated mode. Right-Click and select 'Run as Administrator'
echo.
pause
exit /b 740
)
reg delete HKLM\Software\UDP\WindowsInstall\aad3a310a315f101030965e3da3e15b6 /va /f > nul 2>&1
Когда я открываю cmd.exe
после запуска скрипта, я не вижу переменную среды:
Microsoft Windows [Version 6.1.7601]
Copyright (c) 2009 Microsoft Corporation. All rights reserved.
C:\Users\MClarkson>echo %TOOL_CHAIN_PATH%
%TOOL_CHAIN_PATH%
C:\Users\MClarkson>
Но если я открою cmd.exe
от имени администратора:
Microsoft Windows [Version 6.1.7601]
Copyright (c) 2009 Microsoft Corporation. All rights reserved.
C:\Windows\system32>echo %TOOL_CHAIN_PATH%
C:\Users\MClarkson\Documents\svn\tool-chain
C:\Windows\system32>
Я вижу переменную окружения !!
Я заметил, что могу запустить исходную команду reg add
от имени обычного пользователя - кажется, нет никаких ограничений на установку HKEY_CURRENT_USER
, и тогда я сразу вижу переменную окружения.
Есть ли кто-то более опытный в Windows, который знает, почему обычный пользователь не может видеть раздел реестра, установленный администратором в HKEY_CURRENT_USER
?
Есть ли способ выполнить команду в повышенном пакетном сценарии на неизменном уровне?