
Мне нужно установить обновления Windows на нескольких автономных системах. У меня есть скрипт update_script.bat для запуска, но по мере того, как он циклически устанавливает каждое обновление, элементы управления UAC запрашивают мои учетные данные. Поэтому я нашел параметр командной строки для отключения UAC.
@echo off
echo Disabling UAC controls...
C:\Windows\System32\cmd.exe /k %windir%\System32\reg.exe ADD HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System /v EnableLUA /t REG_DWORD /d 0 /f
C:\Windows\System32\cmd.exe /k %windir%\System32\reg.exe ADD HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System /v ConsentPromptBehaviorAdmin /t REG_DWORD /d 0 /f
shutdown /l /f
Таким образом, когда я передаю свои скрипты подчиненным администраторам, они могут быстро запустить первый скрипт; он автоматически выйдет из системы, после чего они смогут выполнить файл второго скрипта (update_script.bat), но проблема, с которой я сталкиваюсь, заключается в том, что когда я тестирую первый скрипт для отключения UAC, командное окно останавливается на:
Отключение контроля учетных записей...
Операция завершилась успешно.
c:\обновления>
вместо того, чтобы завершить и принудительно отключить пользователя.
Как заставить систему/скрипт принудительно завершить сеанс после отключения контроля учетных записей?
решение1
Удалять
C:\Windows\System32\cmd.exe /k
из пакетного файла.
Запуск cmd.exe
приведет к открытию новой командной строки, что обычно не требуется в пакетном файле.