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

objShell 変数は決して使用されず、oShell と冗長であるため、Set objShell 行は必要ないようです。

VBScript は、ファイルの最後に到達すると 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 に答える