Windows10でスタートメニューが出ない場合の解決方法として良く紹介される手順の意味を確認する
自分自身はWindows10でスタートメニューが出ない不具合に遭遇したことは無いけれど、世の中的には割とあるらしい。
さて、そういう場合の対処方法として良く紹介される手順にはこういうものがある。これを管理者権限で実行するらしい。
dism /online /cleanup-image /restorehealth sfc /scannow powershell Get-AppXPackage -AllUsers |Where-Object {$_.InstallLocation -like “*SystemApps*”} | Foreach {Add-AppxPackage -DisableDevelopmentMode -Register “$($_.InstallLocation)\AppXManifest.xml”}
これを単にコピペしてもよいのだけど、エンジニア的には内容を理解しておくほうが良さげ。
そこでこれらのコマンドの意味を確認しつつ、もっと切りつけ可能な部分はないかと考えてみる。
個々の処理の意味
dism.exe
dismはWindowsのイメージを操作するツール。
パラメータ | 意味 |
---|---|
/online | 現在実行中のOSイメージに対して操作を行う |
/cleanup-image | イメージに対してクリーンアップおよび回復を試みる |
/restorehealth | コンポーネントストアの破損の有無をスキャンし、必要に応じて修復を試みる |
sfc.exe
ファイルシステムの整合性をスキャンして、間違ったバージョンを正しい Windows バージョンに置換する
パラメータ | 意味 |
---|---|
/scannow | 整合性をスキャンすると同時に、問題のあるファイルの修復も行う |
Get-AppXPackage -AllUsers
すべてのユーザ向けのインストール済みストアアプリの情報を取得する
powershell
cmd.exe から PowerShell を起動する。
Where-Object {$_.InstallLocation -like “SystemApps”}
インストール先のフルパスに SystemApps を含むアプリだけを抽出する。
Foreach {Add-AppxPackage -DisableDevelopmentMode -Register “$($_.InstallLocation)\AppXManifest.xml”}
抽出されたストアアプリについて、DisableDevelopmentMode でアプリを再登録する(サイドローディングする)
処理の最適化?
最適化、というほどでもないけれど、今回の作業はそもそも「PowerShellを管理者権限で実行」し、PowerShell上から下記3点を実行すればよさげ。特に Windows10 Creators Update ではコマンドプロンプトから PowerShell への置換が進みつつあるので、わざわざコマンドプロンプトから powershell を実行する意味がない。
dism /online /cleanup-image /restorehealth sfc /scannow Get-AppXPackage -AllUsers |Where-Object {$_.InstallLocation -like “*SystemApps*”} | Foreach {Add-AppxPackage -DisableDevelopmentMode -Register “$($_.InstallLocation)\AppXManifest.xml”}