CMD/BAT - [решено] Перезагрузка компьютера в безопасный режим с помощью скрипта

Аватара пользователя
Kot86

CMD/BAT - [решено] Перезагрузка компьютера в безопасный режим с помощью скрипта

Сообщение Kot86 »

Привет!

Существует ли способ перезагрузить компьютер в безопасный режим с помощью CMD/BAT/VBS/скрипта? Что-то типа

Код:

Код: Выделить всё

shutdown -r -s -t 00

, где "-s" — "Safe Mode" (это лишь пример, как это могло бы выглядеть)
Аватара пользователя
Iska

Re: CMD/BAT - [решено] Перезагрузка компьютера в безопасный режим с помощью скрипта

Сообщение Iska »

Kot86, в том виде, как Вы предполагаете — нет, не существует.



Единственно возможный путь — добавить в конфигурацию перечня ОС для загрузки новую строку, осуществляющую загрузку в безопасный режим, сделать её умолчальной, добавить в реестр однократный запуск команд, убирающих эту строку из конфигурации загрузки и возвращающей предыдущее умолчание, и перезагрузиться. После перезагрузки произойдёт загрузка в безопасный режим, тут же отработают команды на возвращение предыдущего поведения. Примерно так:
vbscript - How do I restart a computer in safe mode with a Windows script? - Stack Overflow
.
Аватара пользователя
Iska

Re: CMD/BAT - [решено] Перезагрузка компьютера в безопасный режим с помощью скрипта

Сообщение Iska »

Iska, благодарю! То, что нужно! Только запускать надо от админа, иначе идёт простой ребут.

P.S. Я так понимаю, что это

Код:

Код: Выделить всё

:ver_nt5x
:Run Windows 2000/XP specific commands here
bootcfg /raw /a /safeboot:network /id 1
REG ADD HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\RunOnce /v "*UndoSB" /t REG_SZ /d "bootcfg /raw /fastdetect /id 1"
SHUTDOWN -r -f -t 05
goto end

можно вырезать для Windows 7?
Аватара пользователя
Kot86

Re: CMD/BAT - [решено] Перезагрузка компьютера в безопасный режим с помощью скрипта

Сообщение Kot86 »

Iska, благодарю! То, что нужно! Только запускать надо от админа, иначе идёт простой ребут.

P.S. Я так понимаю, что это

Код:

Код: Выделить всё

:ver_nt5x
:Run Windows 2000/XP specific commands here
bootcfg /raw /a /safeboot:network /id 1
REG ADD HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\RunOnce /v "*UndoSB" /t REG_SZ /d "bootcfg /raw /fastdetect /id 1"
SHUTDOWN -r -f -t 05
goto end

можно вырезать для Windows 7?
Аватара пользователя
Kot86

Re: CMD/BAT - [решено] Перезагрузка компьютера в безопасный режим с помощью скрипта

Сообщение Kot86 »

В общем, сделал под все версии Windows (от Win2000 до Win10). Выглядит это так:



REBOOT.bat

[spoiler]PHP код:
[/spoiler]

Код: Выделить всё

Echo Off

REM Check Windows Version
ver | findstr /i "5\.0\." > nul
IF %ERRORLEVEL% EQU 0 goto ver_nt5x
ver | findstr /i "5\.1\." > nul
IF %ERRORLEVEL% EQU 0 goto ver_nt5x
ver | findstr /i "5\.2\." > nul
IF %ERRORLEVEL% EQU 0 goto ver_nt5x
ver | findstr /i "6\.0\." > nul
IF %ERRORLEVEL% EQU 0 goto ver_nt6x
ver | findstr /i "6\.1\." > nul
IF %ERRORLEVEL% EQU 0 goto ver_nt6x
ver | findstr /i "6\.2\." > nul
IF %ERRORLEVEL% EQU 0 goto ver_nt6x
ver | findstr /i "6\.3\." > nul
IF %ERRORLEVEL% EQU 0 goto ver_nt6x
ver | findstr /i "10\.0\." > nul
IF %ERRORLEVEL% EQU 0 goto ver_nt10x
goto warn_and_exit

:ver_nt5x
:Run Windows 2000/XP specific commands here
bootcfg /raw /a /safeboot:network /id 1
REG ADD HKLMSOFTWAREMicrosoftWindowsCurrentVersionRunOnce /v "*UndoSB" /t REG_SZ /d "bootcfg /raw /fastdetect /id 1"
SHUTDOWN -r -f -t 03
goto end

:ver_nt6x
:Run Windows Vista/7/8/8.1 specific commands here
bcdedit /set {current} safeboot network
REG ADD HKLMSOFTWAREMicrosoftWindowsCurrentVersionRunOnce /v "*UndoSB" /t REG_SZ /d "bcdedit /deletevalue {current} safeboot"
SHUTDOWN -r -f -t 03
goto end

:ver_nt10x
:Run Windows 10 specific commands here
bcdedit /set {current} safeboot network
REG ADD HKLMSOFTWAREMicrosoftWindowsCurrentVersionRunOnce /v "*UndoSB" /t REG_SZ /d "bcdedit /deletevalue {current} safeboot"
SHUTDOWN -r -f -t 03
goto end

Echo On

:warn_and_exit
echo Machine OS cannot be determined.

:end 












Запускать нужно от имени администратора.



Также можно вызывать "батник" с помощью VBS-скрипта, тогда запуск от администратора не потребуется, но нужно будет подтвердить предупреждение UAC:



REBOOT.vbs

[spoiler]PHP код:
[/spoiler]

Код: Выделить всё

Dim oShell, returnCode
Set objShell = CreateObject("Shell.Application")
Set oShell = WScript.CreateObject("WScript.Shell")

returnCode = oShell.Popup("Do you want to restart your computer in Safe Mode", 0, "Restart In Safe Mode", 4 + 48 + 256)

Select Case returnCode
case 6, -1
    objShell.ShellExecute "REBOOT.bat", "", "", "runas", 0
    case 7
    oShell.popup "Operation Canceled", 0, "Restart In Safe Mode", 0 + 64 + 0
End Select 












В данном случае эти два файла должны находиться в одной папке (например, на рабочем столе).



Чтобы была возможность запускать эти файлы из разных папок, нужно лишь в файле REBOOT.vbs[/i] указать путь до файла REBOOT.bat.

Пример: кидаем файл REBOOT.bat в корень диска D:, получается D:\REBOOT.bat

Открываем блокнотом файл REBOOT.vbs и в строке

PHP код:

Код: Выделить всё

objShell.ShellExecute "REBOOT.bat", "", "", "runas", 0 






меняем "REBOOT.bat[/i]" на "D:\REBOOT.bat"



Получаем

PHP код:

Код: Выделить всё

objShell.ShellExecute "D:\REBOOT.bat", "", "", "runas", 0 






Сохраняем, пользуемся.



P.S. Спасибо Iska за
ссылку
!
Аватара пользователя
MKN

Re: CMD/BAT - [решено] Перезагрузка компьютера в безопасный режим с помощью скрипта

Сообщение MKN »

Цитата Iska:



Единственно возможный путь — добавить в конфигурацию перечня ОС для загрузки новую строку, осуществляющую загрузку в безопасный режим, сделать её умолчальной, добавить в реестр однократный запуск команд, убирающих эту строку из конфигурации загрузки и возвращающей предыдущее умолчание, и перезагрузиться. После перезагрузки произойдёт загрузка в безопасный режим, тут же отработают команды на возвращение предыдущего поведения.
CMD/BAT - [решено] Перезагрузка компьютера в безопасный режим с помощью скрипта




Вот тут все написано. Вместе с отработкой команды на возврат стандартного запуска можно впихнуть этот твик.
Аватара пользователя
MKN

Re: CMD/BAT - [решено] Перезагрузка компьютера в безопасный режим с помощью скрипта

Сообщение MKN »

Elven,


Цитата:



тут же отработают команды на возвращение предыдущего поведения



После запуска REBOOT.bat - SafeMode и никакой принудительной перезагрузки для возвращения в исходное состояние...

ОС - Win10Pro x64.. Запуск от имени админа. В чём может быть дело ?
Ответить

Вернуться в «Скриптовые языки администрирования Windows»