Перезагрузите компьютер в безопасном режиме - оптимизируйте код
У меня есть скрипт, который перезагрузит компьютер с 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