pslaboが試したことの記録

はてなダイヤリーからはてなブログに引っ越してきました

この日記は現在実行中の減量記録を含む個人的なメモとして始めましたが、最近はコンピュータやガジェット、ハック、セキュリティネタのほうがメインになっております。

はてなダイヤリー時代はカテゴリ分けが適当だったのですが、これはそのうち直します。


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”}