Перезагрузите компьютер в безопасном режиме - оптимизируйте код

У меня есть скрипт, который перезагрузит компьютер с Windows в безопасном режиме.

Этот vbscript вызывает BAT-файл, который запрашивает повышение прав UAC, и перезагружает компьютер в безопасном режиме.

Любые предложения о том, как оптимизировать этот скрипт? И может ли это работать в Windows 8?

[code]Dim oShell, retCode
Set oShell = WScript.CreateObject("WScript.Shell")
Set objShell = CreateObject("Wscript.Shell")

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

Select Case retCode
case 6, -1
objShell.Run "elevaterestart.bat"
case 7
WScript.quit(1) 'No was chosen
End Select

Обновление: я обновил скрипт, как предложил и добавил Operation Canceled всплывающее окно, если пользователь выбирает no

Dim oShell, retCode, MsgBox
Set oShell = WScript.CreateObject("WScript.Shell")
Set objShell = CreateObject("Wscript.Shell")

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


If retCode = 6 Or retCode = -1 Then
objShell.Run "elevaterestart.bat"
Else
oShell.popup "Operation Canceled", 0, "Restart In Safe Mode", 0 + 64 + 0
End If`

1 ответ

Решение

Кажется, что строка Set objShell не требуется, так как ваша переменная objShell никогда не используется и является избыточной с oShell.

VBScripts выйдет без вызова wscript.quit(ExitCode), когда будет достигнут конец файла, но если вы вызываете это из чего-то другого, код выхода 1 позволит вам узнать, что пользователь сказал, что не хочет перезагрузка (код завершения по умолчанию при достижении конца файла без ошибок - 0).

Я бы не использовал оператор case - он обычно используется только по стилю, если вы выбираете из ряда вариантов. Скорее всего, я бы закодировал последний раздел, как этот, но это совсем не меняет функциональность.

If retCode = 6 Or retCode = -1 Then
    objShell.Run "elevaterestart.bat"
Else
    WScript.quit(1)
End If
Другие вопросы по тегам