スタートメニューのタイルを初期化

- Windows 10 Version 1803 {April 2018 Update, RedStone4(RS4)}
- Windows 10 Version 1809 {October 2018 Update, RedStone5(RS5)}

を対象にします。まずは、

- キー操作 `Win + X` → `I`
- スタートボタンを右クリックor長押し画面タッチ → `Windows PowerShell(I)`を選択

のいずれかでユーザ権限での `PowerShell` を起動、以下のようなコマンドを入力し実行します。

# 実行例

## 現在のタイルのエクスポート

まずは、現在のスタートメニューの内容をXMLファイルとしてエクスポートして、後で元に戻せるようにしておきます。

```powershell
Export-StartLayout "${env:USERPROFILE}\Documents\MyStartTiles.xml"

```

## タイルを空に

レジストリキーの値を書き換えることで、スタートメニューのタイルが何もない状態にします。

```powershell
if([System.Environment]::OSVersion.Version.Build -ge 17134 -and [System.Environment]::OSVersion.Version.Build -le 17763){Get-ItemProperty -Path "HKCU:\Software\Microsoft\Windows\CurrentVersion\CloudStore\Store\Cache\DefaultAccount\*start.tilegrid`$windows.data.curatedtilecollection.tilecollection\Current"|ForEach-Object{Set-ItemProperty -Path $_.PSPath -Name Data -Value ($_.Data[0..25]+([byte[]](202,50,0,226,44,1,1,0,0)))};Stop-Process -Name ShellExperienceHost -Force -ErrorAction SilentlyContinue}

```

- https://github.com/Disassembler0/Win10-Initial-Setup-Script/
  - [Function UnpinStartMenuTiles](https://github.com/Disassembler0/Win10-Initial-Setup-Script/blob/e536019794118c8ae32eb252c80122ec5c548388/Win10.psm1#L3028) の実装を一部切り出したものです。

## タイルのリセット

スタートメニュータイルの情報を格納しているレジストリを削除する事で、スタートメニュータイルのリセットを行います。ユーザーのデフォルト、もしくは出荷時設定にリセットされます。

```powershell
if([System.Environment]::OSVersion.Version.Build -ge 17134 -and [System.Environment]::OSVersion.Version.Build -le 17763){Remove-Item -Path "HKCU:\Software\Microsoft\Windows\CurrentVersion\CloudStore\Store\Cache\DefaultAccount\*start.tilegrid`$windows.data.curatedtilecollection.tilecollection\Current" -Force;Stop-Process -Name ShellExperienceHost -Force -ErrorAction SilentlyContinue}

```

## タイルを元に戻す

エクスポートしたXMLファイルをユーザーのデフォルトとなるよう、所定の場所にコピーしてからリセットを行い、スタートメニューを元に戻します。先に示した `Export-StartLayout` コマンドの実行例で、タイルを変更する前にあらかじめエクスポートを行っていたのを前提にしています。

```powershell
Copy-Item "${env:USERPROFILE}\Documents\MyStartTiles.xml" "${env:USERPROFILE}\AppData\Local\Microsoft\Windows\Shell\LayoutModification.xml";
if([System.Environment]::OSVersion.Version.Build -ge 17134 -and [System.Environment]::OSVersion.Version.Build -le 17763){Remove-Item -Path "HKCU:\Software\Microsoft\Windows\CurrentVersion\CloudStore\Store\Cache\DefaultAccount\*start.tilegrid`$windows.data.curatedtilecollection.tilecollection\Current" -Force;Stop-Process -Name ShellExperienceHost -Force -ErrorAction SilentlyContinue}

```

## タイルをWindowsの既定に

Windows既定のレイアウトとなるXMLデータをユーザーのデフォルトとしてからリセットを行います。

```powershell
if([System.Environment]::OSVersion.Version.Build -ge 17134 -and [System.Environment]::OSVersion.Version.Build -le 17763){Set-Content -Path "${env:USERPROFILE}\AppData\Local\Microsoft\Windows\Shell\LayoutModification.xml" -Value @"
<LayoutModificationTemplate xmlns="http://schemas.microsoft.com/Start/2014/LayoutModification" xmlns:defaultlayout="http://schemas.microsoft.com/Start/2014/FullDefaultLayout" xmlns:start="http://schemas.microsoft.com/Start/2014/StartLayout" Version="1"/>
"@ -Force;Remove-Item -Path "HKCU:\Software\Microsoft\Windows\CurrentVersion\CloudStore\Store\Cache\DefaultAccount\*start.tilegrid`$windows.data.curatedtilecollection.tilecollection\Current" -Force;Stop-Process -Name ShellExperienceHost -Force -ErrorAction SilentlyContinue}

```

- [Windows IT Pro Center: Windows 10 デスクトップ エディションのスタート画面のレイアウト XML (リファレンス)](https://docs.microsoft.com/ja-jp/windows/configuration/start-layout-xml-desktop)