こんにちは、阿久津です。Windows 10で意外に不便なのが、セーフモードの呼び出し方でしょうか。通常であれば、[Shift]キーを押しながら電源ボタンのメニューに並ぶ<再起動>を選択し、一連のメニューをたどる必要があります。shutdown.exeを使う方法もありますが、直接セーフモードを呼び出せないですし、コマンドラインに不慣れなユーザーには使いやすいとはいえません。

以前のWindowsと異なり、セーフモードを使用するシーンは減っています。それでもトラブル時の問題を切り分ける際には欠かせません。そこで、デスクトップのコンテキストメニューに、各セーフモードを呼び出す項目を追加するチューニングを紹介しましょう。

  • Windowsスマートチューニング

    チューニング後はデスクトップのコンテキストメニューに<セーフモード>が加わります

1. 各VBSファイルを「C:¥SafeMode」に作成します。
2. レジストリファイル「SafeMode.reg」を「C:¥SafeMode」に作成します。
3. SafeMode.regをダブルクリックで実行し、レジストリに内容を追加します。
4. Windows 10に再サインインします。

以上でチューニングは完了しました。「1.」の各VBSファイルと、「2.」のレジストリファイルは、記事末のコードをコピペして作成してください。VBSファイルとレジストリファイルは、文字コードを「UTF-16」(リトルエンディアン)で保存します。

デスクトップのコンテキストメニューを開くと<セーフモード>が加わり、サブメニューに各種項目が現れます。これらは各VBSファイルを呼び出し、bcdedit.exeで起動状態を書き換えてからPCを再起動する仕組みです。

  • Windowsスマートチューニング

    VBSの実行を伴うため、UACの確認を求められる

  • Windowsスマートチューニング

    PCの再起動を経て、セーフモードが有効になる

今回は[S]キーでメニューを呼び出せるようにしていますが、不用な場合は「"MUIVerb"="セーフモード(&S)"」のパーレンを削除してください。また、本チューニングが不用になった場合は、HKEY_CLASSES_ROOT¥DesktopBackground¥Shell¥SafeModeキーを削除してVBSファイルを格納したフォルダーを削除します。

  • Windowsスマートチューニング

    再びノーマルブートに戻すには<ノーマル>を選択する

それでは、また次回お目にかかりましょう。

阿久津良和(Cactus)

コード:「SafeMode.vbs」

If WScript.Arguments.length = 0 Then
set OS = CreateObject("Shell.Application")
OS.ShellExecute "wscript.exe", Chr(34) & WScript.ScriptFullName & Chr(34) & " Run", , "runas", 1
Else
set OS2 = WScript.CreateObject("WScript.Shell")
OS2.Run "bcdedit /set {current} safeboot minimal",0,True
OS2.Run "shutdown -r -t 0 -f", 0, True
End If

コード:「SafeModeCommandPrompt.vbs」

If WScript.Arguments.length = 0 Then
set OS = CreateObject("Shell.Application")
OS.ShellExecute "wscript.exe", Chr(34) & WScript.ScriptFullName & Chr(34) & " Run", , "runas", 1
Else
set OS2 = WScript.CreateObject("WScript.Shell")
OS2.Run "bcdedit /set {current} safeboot minimal",0,True
OS2.Run "bcdedit /set {current} safebootalternateshell yes",0,True
OS2.Run "shutdown -r -t 0 -f", 0, True
End If

コード:「SafeModeNetworking.vbs」

If WScript.Arguments.length = 0 Then
set OS = CreateObject("Shell.Application")
OS.ShellExecute "wscript.exe", Chr(34) & WScript.ScriptFullName & Chr(34) & " Run", , "runas", 1
Else
set OS2 = WScript.CreateObject("WScript.Shell")
OS2.Run "bcdedit /set {current} safeboot network",0,True
OS2.Run "shutdown -r -t 0 -f", 0, True
End If

コード:「NormalMode.vbs」

If WScript.Arguments.length = 0 Then
set OS = CreateObject("Shell.Application")
OS.ShellExecute "wscript.exe", Chr(34) & WScript.ScriptFullName & Chr(34) & " Run", , "runas", 1
Else
set OS2 = WScript.CreateObject("WScript.Shell")
OS2.Run "bcdedit /deletevalue {current} safeboot",0,True
OS2.Run "shutdown -r -t 0 -f", 0, True
End If

コード:「SafeMode.reg」(レジストリファイル)

Windows Registry Editor Version 5.00

[HKEY_CLASSES_ROOT¥DesktopBackground¥Shell¥SafeMode]
"MUIVerb"="セーフモード(&S)"
"SubCommands"=""
"Icon"="bootux.dll,-1032"
"Position"="Bottom"

[HKEY_CLASSES_ROOT¥DesktopBackground¥Shell¥SafeMode¥Shell¥01SafeMode]
@="セーフモード"
"HasLUAShield"=""

[HKEY_CLASSES_ROOT¥DesktopBackground¥Shell¥SafeMode¥Shell¥01SafeMode¥Command]
@="wscript.exe c:¥¥SafeMode¥¥SafeMode.vbs"

[HKEY_CLASSES_ROOT¥DesktopBackground¥Shell¥SafeMode¥Shell¥02SafeMode]
@="セーフモード(ネットワーク)"
"HasLUAShield"=""

[HKEY_CLASSES_ROOT¥DesktopBackground¥Shell¥SafeMode¥Shell¥02SafeMode¥Command]
@="wscript.exe c:¥¥SafeMode¥¥SafeModeNetworking.vbs"

[HKEY_CLASSES_ROOT¥DesktopBackground¥Shell¥SafeMode¥Shell¥03SafeMode]
@="セーフモード(コマンドプロンプト)"
"HasLUAShield"=""

[HKEY_CLASSES_ROOT¥DesktopBackground¥Shell¥SafeMode¥Shell¥03SafeMode¥Command]
@="wscript.exe c:¥¥SafeMode¥¥SafeModeCommandPrompt.vbs"

[HKEY_CLASSES_ROOT¥DesktopBackground¥Shell¥SafeMode¥Shell¥04SafeMode]
@="ノーマル"
"HasLUAShield"=""

[HKEY_CLASSES_ROOT¥DesktopBackground¥Shell¥SafeMode¥Shell¥04SafeMode¥Command]
@="wscript.exe c:¥¥SafeMode¥¥NormalMode.vbs"