0

我有一个脚本可以在安全模式下重新启动 Windows 计算机。

此 vbscript 调用一个提示 UAC 提升的 BAT 文件,并以安全模式重新启动计算机。

有关如何优化此脚本的任何建议?这可以在 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`
4

1 回答 1

0

似乎不需要 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
于 2012-12-19T21:02:51.520 回答