Windows 11の基本設定

概要

Windows 11の基本設定について解説する。不要なプリインストールアプリの削除、ディスクのクリーンアップ、空き領域のゼロフィル(削除済みデータを復元不能にするデータ消去手法)、長いパス名制限(従来の260文字制限)の緩和、システムサービスの最適化などの設定をコマンドラインから実行する方法に加え、BIOS/UEFIへのアクセス、バックアップと復元、トラブルシューティングについて取り上げる。

Windows 11基本設定の全体像

【本資料の推奨実行順序】

  1. バックアップとシステムの復元ポイントの作成(2章)
  2. Windows Updateの適用(3章)
  3. 不要アプリの整理(4章の手動削除、または5章のWin11Debloatのいずれか一方)
  4. サービス・機能の最適化(6章)
  5. DNS・電源・その他の設定(7〜9章)
  6. ディスククリーンアップ(10章)

コマンドプロンプトとPowerShellの使い分け:本資料では、Windowsに古くから存在するコマンドラインインタープリターであるコマンドプロンプト(cmd.exe)と、スクリプト機能を持つPowerShellの両方を使用する。バッチファイル(.bat)およびreg、sc、netshなどのコマンドはコマンドプロンプトで、Get-AppxPackageやSet-ItemPropertyなどのコマンドレットはPowerShellで実行する。本資料では各操作で使用する方を明示する。

外部スクリプトの実行に関する注意:本資料には、インターネットから取得したPowerShellスクリプト(Win11Debloatなど)を実行する手順を含む。実行前に、配布元のURLが公式リポジトリのものであることを確認する。スクリプトを一旦保存し、内容を確認してから実行する方法もとれる。

目次

サイト内の関連情報

Windows の基本操作・コマンド操作・設定と、アプリ・開発環境・ローカル AI の導入

重要概念

1. BIOS/UEFIメニューへのアクセス

目的:BIOS/UEFIの設定画面では、起動デバイスの優先順位の変更、セキュアブートの設定、仮想化機能の有効化などを行う。通常は起動時に特定のキー(F2、Delなど)を押す必要があるが、以下のコマンドを使用することでアクセスできる。

前提条件:本コマンドはUEFIファームウェアを搭載したシステムでのみ動作する。レガシーBIOSのシステムでは、PCの起動時にF2、Delなどのキーを押して設定画面を開く。

コマンドプロンプトを管理者権限で起動する(Windowsキーを押すか、スタートメニューをクリックし、「cmd」と入力する。表示された「コマンドプロンプト」を右クリックし、「管理者として実行」を選択する)。

次のコマンドを実行する。

shutdown /r /fw /t 0

このコマンドの説明:

このコマンドを実行すると、システムが再起動し、BIOS/UEFI設定画面が表示される。/fwスイッチは管理者権限での実行が必須である。

2. バックアップと復元

目的:システム設定を変更する前に、重要なデータのバックアップとシステムの復元ポイントを作成する。問題発生時に以前の状態へ戻せるよう、作業開始前に実施する。

ファイルのバックアップ方法

方法1: エクスプローラーを使用したバックアップ

重要なファイルを外部ドライブにコピーしてバックアップを作成する。

  1. 外部ドライブ(USBメモリ、外付けHDD、外付けSSDなど)をコンピューターに接続する。
  2. エクスプローラーを開き、バックアップしたいファイルやフォルダーを選択する。
  3. 選択したファイルやフォルダーを右クリックし、「コピー」を選択する。
  4. 外部ドライブを開き、適切な場所で右クリックし、「貼り付け」を選択する。
  5. コピーが完了するまで待つ。大量のファイルや大容量のファイルの場合は時間がかかる。

方法2: robocopyを使用したバックアップ

robocopyは、Windowsに標準搭載されたファイルコピーコマンドで、大量ファイルのコピーと失敗時の再試行機能を備えている。

コマンドプロンプトを管理者権限で起動する(Windowsキーを押すか、スタートメニューをクリックし、「cmd」と入力する。表示された「コマンドプロンプト」を右クリックし、「管理者として実行」を選択する)。

次のコマンドを実行する(例:Cドライブのユーザーフォルダー全体をEドライブにバックアップする場合)。

robocopy C:\Users E:\Backup\Users /E /COPYALL /R:3 /W:5 /MT:8

このコマンドの説明:

システムの復元ポイントの作成

復元ポイントにより、システムファイルとレジストリ(Windowsの設定情報を格納するデータベース)を特定時点の状態に戻すことができる。

事前準備:Windows 11では、システムの保護が既定で無効になっているドライブが多い。復元ポイントを作成する前に、「システムのプロパティ」→「システムの保護」タブで対象ドライブ(通常はCドライブ)を選択し、「構成」から「システムの保護を有効にする」を選択する。

方法1: GUIを使用した作成

  1. Windowsキーを押し、「復元ポイントの作成」と入力して検索する。
  2. 「復元ポイントの作成」を選択し、「システムのプロパティ」ウィンドウを開く。
  3. 「システムの保護」タブを選択する。
  4. 「作成」ボタンをクリックする。
  5. 復元ポイントの説明を入力する(例:「システム設定変更前のバックアップ」)。
  6. 「作成」ボタンをクリックし、復元ポイントの作成が完了するまで待つ。

方法2: PowerShellを使用した作成

PowerShellを管理者として実行する。

次のコマンドを実行する。

Checkpoint-Computer -Description "システム設定変更前のバックアップ" -RestorePointType "MODIFY_SETTINGS"

Windowsの既定では、直前の復元ポイント作成から24時間以内は新しい復元ポイントが作成されない。この間隔を変更するには、コマンドプロンプトを管理者権限で起動し(Windowsキーを押すか、スタートメニューをクリックし、「cmd」と入力する。表示された「コマンドプロンプト」を右クリックし、「管理者として実行」を選択する)、次のコマンドを実行する。値は分単位であり、0を指定すると毎回作成される。

reg add "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\SystemRestore" /v "SystemRestorePointCreationFrequency" /t REG_DWORD /d "0" /f

復元ポイントが作成されたことの確認

復元ポイントが正しく作成されたかは、PowerShellで確認できる。PowerShellを管理者として実行し、次のコマンドを実行する。

Get-ComputerRestorePoint | Format-Table -AutoSize

作成した復元ポイントが一覧に表示されれば成功である。Description列に作成時に指定した説明(例:「システム設定変更前のバックアップ」)、CreationTime列に作成日時が表示される。一覧に何も表示されない場合は、システムの保護が有効になっていないか、24時間以内に作成された既存の復元ポイントがあるために新規作成がスキップされた可能性がある。

復元ポイントからの復旧

方法1: GUIを使用した復旧(Windowsが正常に起動する場合)

  1. Windowsキーを押し、「復元ポイントの作成」と入力して検索する。
  2. 「復元ポイントの作成」を選択し、「システムのプロパティ」ウィンドウを開く。
  3. 「システムの保護」タブを選択する。
  4. 「システムの復元」ボタンをクリックする。
  5. 「次へ」をクリックし、復元ポイントの一覧から復元ポイントを選択する。
  6. 「影響を受けるプログラムの検出」をクリックして、復元により影響を受けるプログラムを確認する(任意)。
  7. 「次へ」をクリックし、復元ポイントの内容を確認する。
  8. 「完了」をクリックし、システムの復元を開始する。
  9. システムが再起動され、復元が完了する。

方法2: コマンドプロンプトを使用した復旧(Windowsが正常に起動する場合)

コマンドプロンプトを管理者権限で起動する(Windowsキーを押すか、スタートメニューをクリックし、「cmd」と入力する。表示された「コマンドプロンプト」を右クリックし、「管理者として実行」を選択する)。

次のコマンドを実行する。

rstrui.exe

システムの復元ウィンドウが開く。以降は、復元ポイントの一覧から復元ポイントを選択し、「次へ」、「完了」の順にクリックして復元を開始する。

方法3: セーフモードからの復旧(Windowsが正常に起動しない場合)

  1. Windowsが起動しない場合、電源ボタンを長押しして強制終了し、再度電源を入れる。この操作を2〜3回繰り返すと、自動修復モードが起動する。
  2. 「詳細オプション」を選択する。
  3. 「トラブルシューティング」を選択する。
  4. 「詳細オプション」を選択する。
  5. 「システムの復元」を選択する。
  6. 管理者アカウントを選択し、パスワードを入力する。
  7. 復元ポイントの一覧から復元ポイントを選択し、「次へ」をクリックする。
  8. 「完了」をクリックし、システムの復元を開始する。
  9. システムが再起動され、復元が完了する。

【注意事項】システムの復元は、システムファイルとレジストリ設定を以前の状態に戻すが、個人ファイル(ドキュメント、写真、音楽など)には影響しない。復元ポイント作成後にインストールしたプログラムやドライバーは削除される場合があるため、復元後に必要なものを再インストールする。

3. Windowsの更新

目的:Windows Updateにより、セキュリティパッチの適用、バグ修正、新機能の追加が行われる。WSL(Windows Subsystem for Linux: Windows上でLinuxバイナリを実行するサブシステム)を使用する場合は、カーネルインターフェースとの互換性維持のためにも更新が必要である。

コマンドプロンプトを管理者権限で起動する(Windowsキーを押すか、スタートメニューをクリックし、「cmd」と入力する。表示された「コマンドプロンプト」を右クリックし、「管理者として実行」を選択する)。

次のコマンドを実行する。

start ms-settings:windowsupdate
Windows Update画面

更新状態の確認

適用済みの更新プログラムと最終更新日は、コマンドで確認できる。従来用いられたwmic qfeコマンドはWMIC(Windows Management Instrumentation Command-line)の非推奨化に伴い、新しいWindows 11では既定で利用できない場合がある。以下のコマンドを使用する。

コマンドプロンプトで、適用済み更新プログラムの一覧を確認する。

systeminfo | findstr /C:"KB"

または、PowerShellで更新プログラムの一覧と適用日を確認する。

Get-HotFix | Sort-Object InstalledOn -Descending | Select-Object HotFixID, Description, InstalledOn

OSのビルド番号を確認する場合は、コマンドプロンプトで次を実行する。Windows Updateの適用後はビルド番号やリビジョンが更新される。

winver

あるいは、コマンドプロンプトで次を実行してOSバージョンとビルドを確認する。

systeminfo | findstr /B /C:"OS バージョン" /C:"OS Version"

Get-HotFixはコンポーネントベースサービシング(CBS)経由で適用された更新のみを表示するため、すべての品質更新プログラムが一覧に現れるとは限らない。すべての履歴は、設定アプリの「Windows Update」→「更新の履歴」で確認する。

【注意事項】更新の適用後に不具合が生じた場合は、設定アプリの「Windows Update」→「更新の履歴」→「更新プログラムをアンインストールする」から該当の更新を削除するか、システムの復元ポイントを使用して復旧する。更新前に重要データのバックアップを行っておく。

4. 不要なプリインストールアプリの削除

目的:Windows 11には多数のプリインストールアプリが含まれている。使用しないアプリを削除することで、ディスク容量の節約、システムリソースの解放、スタートメニューの簡素化を行う。不要アプリの整理は、本章のスクリプトによる手動削除と、Win11Debloatによる自動化のいずれか一方を選択して実行する(両者は機能が重複する)。

方法1: スクリプトによる一括削除

アプリの一括削除を行い、その後、残存しているアプリを一覧表示して確認する。この処理は、以下のスクリプトを用いて実行する。削除されるアプリはスクリプト内に記載しているので、確認し、必要に応じて変更を行った上で実行すること。

  1. コマンドプロンプトを起動する(Windowsキーを押して「cmd」と入力し、表示された「コマンドプロンプト」をクリックする)。
  2. エディターを起動する(以下のコマンドはユーザーのホームディレクトリに移動し、removeapp.batという名前のバッチファイルをメモ帳で開く)。
    cd /d "%USERPROFILE%"
    notepad removeapp.bat
    エディター起動画面
  3. エディターで、次のスクリプトを保存する。

    参考ページ: https://elluminetpress.com/2021/03/uninstall-windows-11-apps-in-powershell/

    (Net session >nul 2>&1)||(PowerShell start """%~0""" -verb RunAs & Exit /B)
    REM Alarms and Clock
    powershell -command "Get-AppxPackage *WindowsAlarms* | Remove-AppxPackage"
    REM Calculator
    powershell -command "Get-AppxPackage *WindowsCalculator* | Remove-AppxPackage"
    REM Cortana
    powershell -command "Get-AppxPackage *Microsoft.549981C3F5F10* | Remove-AppxPackage"
    REM Feedback Hub
    powershell -command "Get-AppxPackage *WindowsFeedbackHub* | Remove-AppxPackage"
    REM Help and tips
    powershell -command "Get-AppxPackage *GetHelp* | Remove-AppxPackage"
    REM Maps
    powershell -command "Get-AppxPackage *WindowsMaps* | Remove-AppxPackage"
    REM Microsoft To-Do
    powershell -command "Get-AppxPackage *Todos* | Remove-AppxPackage"
    REM Movies and TV
    powershell -command "Get-AppxPackage *ZuneVideo* | Remove-AppxPackage"
    REM Music app
    powershell -command "Get-AppxPackage *ZuneMusic* | Remove-AppxPackage"
    REM News app
    powershell -command "Get-AppxPackage *BingNews* | Remove-AppxPackage"
    REM OneDrive
    powershell -command "Get-AppxPackage *OneDriveSync* | Remove-AppxPackage"
    REM Photos app
    powershell -command "Get-AppxPackage *Windows.Photos* | Remove-AppxPackage"
    REM Skype
    powershell -command "Get-AppxPackage *SkypeApp* | Remove-AppxPackage"
    REM Solitaire Collection
    powershell -command "Get-AppxPackage *MicrosoftSolitaireCollection* | Remove-AppxPackage"
    REM Spotify
    powershell -command "Get-AppxPackage *SpotifyAB.SpotifyMusic* | Remove-AppxPackage"
    REM Teams/Chat
    powershell -command "Get-AppxPackage *Teams* | Remove-AppxPackage"
    REM Weather
    powershell -command "Get-AppxPackage *BingWeather* | Remove-AppxPackage"
    REM Xbox and related apps
    powershell -command "Get-AppxPackage Microsoft.XboxGamingOverlay | Remove-AppxPackage"
    powershell -command "Get-AppxPackage Microsoft.Xbox.TCUI | Remove-AppxPackage"
    powershell -command "Get-AppxPackage Microsoft.XboxGameOverlay | Remove-AppxPackage"
    powershell -command "Get-AppxPackage Microsoft.XboxIdentityProvider | Remove-AppxPackage"
    powershell -command "Get-AppxPackage Microsoft.XboxSpeechToTextOverlay | Remove-AppxPackage"
    REM Your Phone
    powershell -command "Get-AppxPackage *YourPhone* | Remove-AppxPackage"
    REM AmazonVideo.PrimeVideo
    powershell -command "Get-AppxPackage AmazonVideo.PrimeVideo | Remove-AppxPackage"
    REM 削除後に残存しているアプリを一覧表示して確認する
    powershell -command "Get-AppxPackage | Select Name"
    PAUSE

    スクリプトの先頭行は、管理者権限でない場合に管理者権限で再実行するための処理である。各Remove-AppxPackageコマンドは、現在のユーザーに対してアプリを削除する。末尾のGet-AppxPackage | Select Nameは削除完了後に残存しているアプリを一覧表示し、削除結果を確認するためのものである。

    スクリプト編集画面
  4. スクリプトを実行する。
    cd /d "%USERPROFILE%"
    .\removeapp.bat
    スクリプト実行画面
  5. 終了を確認する。

    残存アプリが一覧表示され、何かキーを押すと画面が閉じる。

    実行完了画面

アプリが削除されたことの確認

特定のアプリが削除されたかは、PowerShellで確認できる(例:電卓の場合)。

Get-AppxPackage *WindowsCalculator*

何も出力されなければ、そのアプリは現在のユーザーから削除されている。出力がある場合は、まだ残存している。*で囲む検索文字列は、スクリプト内の各Get-AppxPackageに指定したもの(WindowsAlarms、BingWeatherなど)に読み替える。

方法2: Remove-MS-Store-Appsの使用

Remove-MS-Store-Appsは、Microsoft Store アプリを一覧から選択して削除するPowerShellスクリプトである。使用手順は次のページに記載されている。

参考ページ: https://github.com/Digressive/Remove-MS-Store-Apps

【注意事項】削除したアプリを再び使用する場合は、Microsoft Storeから再インストールする。電卓やフォトなど日常的に使用するアプリは、削除対象から外しておく。

5. Win11Debloat

目的:Win11Debloatは、Windowsの簡素化と最適化を自動で行うPowerShellスクリプトである(MITライセンス)。主要機能は次のとおりである。

URL: https://github.com/Raphire/Win11Debloat

手動でプライバシー設定を変更する場合は、設定アプリの「プライバシーとセキュリティ」から各項目を設定する。

実行方法

PowerShellを管理者として実行する。

次のコマンドを実行する。

& ([scriptblock]::Create((irm "https://debloat.raphi.re/")))

このコマンドは、irm(Invoke-RestMethod: 指定URLのコンテンツを取得する)で公式の配布用URLからスクリプトを取得し、[scriptblock]::Createで実行可能なスクリプトブロックに変換し、&(呼び出し演算子)で実行する。https://debloat.raphi.re/は、Win11Debloatの公式リポジトリ(github.com/Raphire/Win11Debloat)が提供する配布用URLである。

【注意事項】上記のコマンドは、外部スクリプトをダウンロードして実行する。配布元URLが公式のもの(debloat.raphi.re、github.com/Raphire/Win11Debloat)であることを確認する。公式リポジトリからスクリプト一式をダウンロードし、内容を確認してから実行する方法もとれる。本スクリプトはシステム全体に影響するため、実行前に復元ポイントを作成しておく。

PowerShellの実行ポリシーによりスクリプトが実行できない場合は、PowerShellを管理者として開き、Set-ExecutionPolicy RemoteSigned -Scope CurrentUserを実行してから再試行する。

6. サービスの停止

目的:使用しないサービスを手動起動に変更することで、システム起動時間の短縮、メモリ使用量の削減、バックグラウンド処理の軽減が期待できる。

サービスの一括設定

サービスの一括設定を行う。この処理は、以下のスクリプトを用いて実行する。ここでは、いくつかのサービスを「start= demand」(手動起動: サービスを必要なときのみ起動する設定)に変更する。設定内容はスクリプト内に記載しているので、確認し、必要に応じて変更を行った上で実行すること。

  1. コマンドプロンプトを起動する(Windowsキーを押して「cmd」と入力し、表示された「コマンドプロンプト」をクリックする)。
  2. エディターを起動する。
    cd /d "%USERPROFILE%"
    notepad winservice.bat
    エディター起動画面
  3. エディターで、次のスクリプトを保存する。
    (Net session >nul 2>&1)||(PowerShell start """%~0""" -verb RunAs & Exit /B)
    REM ActiveX Installer (AxInstSV)
    sc config AxInstSV start= demand
    REM AllJoyn Router Service
    sc config AJRouter start= demand
    REM Connected User Experiences and Telemetry
    sc config DiagTrack start= demand
    REM Distributed Link Tracking Client
    sc config TrkWks start= demand
    REM Geolocation Service
    sc config lfsvc start= demand
    REM Internet Connection Sharing (ICS)
    sc config SharedAccess start= demand
    REM Link-Layer Topology Discovery Mapper
    sc config lltdsvc start= demand
    REM Network Connected Devices Auto-Setup
    sc config NcdAutoSetup start= demand
    REM Peer Name Resolution Protocol
    sc config PNRPsvc start= demand
    REM Peer Networking Grouping
    sc config p2psvc start= demand
    REM Peer Networking Identity Manager
    sc config p2pimsvc start= demand
    REM PNRP Machine Name Publication Service
    sc config PNRPAutoReg start= demand
    REM SSDP Discovery
    sc config SSDPSRV start= demand
    REM WalletService
    sc config WalletService start= demand
    REM Windows モバイル ホットスポットサービス
    sc config icssvc start= demand
    REM Xbox Live Auth Manager
    sc config XblAuthManager start= demand
    REM Xbox Live セーブデータ
    sc config XblGameSave start= demand
    REM Xbox Live ネットワーキングサービス
    sc config XboxNetApiSvc start= demand
    REM 市販デモ サービス
    sc config RetailDemo start= demand
    REM
    ECHO システムを再起動します
    PAUSE
    Shutdown /r /t 5 /c "REBOOTING THE SYSTEM"

    sc configは、Windowsのサービスの設定を変更するコマンドである。start= demandは手動起動を意味する。自動起動に戻す場合はstart= autoを指定して同様に実行する(例:sc config DiagTrack start= auto)。

    スクリプト編集画面
  4. スクリプトを実行する。
    cd /d "%USERPROFILE%"
    .\winservice.bat
    スクリプト実行画面
  5. 終了を確認する。

    設定が完了すると、メッセージが表示される。何かキーを押すと、画面が閉じてシステムが再起動する。

    実行完了画面

サービスの設定が変更されたことの確認

各サービスの起動の種類は、コマンドプロンプトでsc qcコマンドを使って確認できる(例:DiagTrackサービスの場合)。

sc qc DiagTrack

出力のSTART_TYPE3 DEMAND_START(手動起動)になっていれば、設定が反映されている。2 AUTO_STARTは自動起動を意味する。サービス名はスクリプト内のsc configに指定したもの(AxInstSV、DiagTrackなど)に読み替える。

各種機能の停止

通知、検索、ウィジェットなどの機能を無効化する。この処理は、以下のスクリプトを用いて実行する。設定内容はスクリプト内に記載しているので、確認し、必要に応じて変更を行った上で実行すること。

  1. コマンドプロンプトを起動する(Windowsキーを押して「cmd」と入力し、表示された「コマンドプロンプト」をクリックする)。
  2. エディターを起動する。
    cd /d "%USERPROFILE%"
    notepad wincustom.bat
  3. エディターで、次のスクリプトを保存する。
    (Net session >nul 2>&1)||(PowerShell start """%~0""" -verb RunAs & Exit /B)
    REM トースト通知をオフにする
    reg add "HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\PushNotifications" /v "ToastEnabled" /t REG_DWORD /d "0" /f
    REM 通知とアクションセンターをオフにする
    reg add "HKEY_CURRENT_USER\Software\Policies\Microsoft\Windows\Explorer" /v "DisableNotificationCenter" /t REG_DWORD /d "1" /f
    REM タスクバーで chat を表示しない
    reg add "HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced" /v "TaskbarMn" /t REG_DWORD /d "0" /f
    REM スタートメニュー検索でウェブの検索結果を表示させない
    reg add "HKEY_CURRENT_USER\Software\Policies\Microsoft\Windows\Explorer" /v "DisableSearchBoxSuggestions" /t REG_DWORD /d "1" /f
    REM Windows 11 ウィジェットを削除する
    reg add "HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Dsh" /v "AllowNewsAndInterests" /t REG_DWORD /d "0" /f
    REM Windows エラー報告を無効にする
    reg add "HKEY_LOCAL_MACHINE\Software\Policies\Microsoft\Windows\Windows Error Reporting" /v "Disabled" /t REG_DWORD /d "1" /f
    REM 場所(位置情報)を無効にする
    reg add "HKEY_LOCAL_MACHINE\Software\Policies\Microsoft\Windows\LocationAndSensors" /v "DisableLocation" /t REG_DWORD /d "1" /f
    echo Windows 11 プライバシー向上&軽量化
    echo テレメトリとデータ収集サービスを無効化しています...
    sc stop DiagTrack
    sc config DiagTrack start= disabled
    sc stop dmwappushservice
    sc config dmwappushservice start= disabled
    reg add "HKLM\SOFTWARE\Policies\Microsoft\Windows\DataCollection" /v AllowTelemetry /t REG_DWORD /d 0 /f
    echo 広告やおすすめ機能を無効化しています...
    reg add "HKLM\SOFTWARE\Policies\Microsoft\Windows\CloudContent" /v DisableWindowsConsumerFeatures /t REG_DWORD /d 1 /f
    reg add "HKLM\SOFTWARE\Policies\Microsoft\Windows\CloudContent" /v DisableTailoredExperiencesWithDiagnosticData /t REG_DWORD /d 1 /f
    echo スタートメニューのWeb(Bing)検索とCopilotを無効化しています...
    reg add "HKCU\Software\Policies\Microsoft\Windows\Explorer" /v DisableSearchBoxSuggestions /t REG_DWORD /d 1 /f
    reg add "HKCU\Software\Policies\Microsoft\Windows\WindowsCopilot" /v TurnOffWindowsCopilot /t REG_DWORD /d 1 /f
    echo アクティビティ履歴の収集を無効化しています...
    reg add "HKLM\SOFTWARE\Policies\Microsoft\Windows\System" /v PublishUserActivities /t REG_DWORD /d 0 /f
    reg add "HKLM\SOFTWARE\Policies\Microsoft\Windows\System" /v EnableActivityFeed /t REG_DWORD /d 0 /f
    
    echo ---------------------------------------------------------
    echo 完了しました。設定を完全に反映させるため、PCを再起動してください。
    echo ---------------------------------------------------------
    
    REM
    ECHO システムを再起動します
    PAUSE
    Shutdown /r /t 5 /c "REBOOTING THE SYSTEM"

    reg addは、レジストリのキーや値を追加・変更するコマンドである。HKEY_CURRENT_USERは現在のユーザーに関する設定、HKEY_LOCAL_MACHINEはシステム全体の設定を格納するレジストリのルートキーである。

  4. スクリプトを実行する。
    cd /d "%USERPROFILE%"
    .\wincustom.bat
  5. 終了を確認する。

    何かキーを押すと、画面が閉じてシステムが再起動する。

    実行完了画面

設定が反映されたことの確認

書き込んだ値は、コマンドプロンプトでreg queryコマンドにより確認できる(例:トースト通知の設定)。

reg query "HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\PushNotifications" /v ToastEnabled

ToastEnabled REG_DWORD 0x0と表示されれば、トースト通知は無効になっている。他の項目も、スクリプト内のreg addに指定したキーと値の名前に読み替えて確認する。

【注意事項】位置情報を無効にすると、地図アプリや「デバイスの検索」など位置情報を使う機能が動作しなくなる。必要な場合は、該当行を削除してからスクリプトを実行するか、DisableLocationの値を0に設定して元に戻す。ネットワーク関連のサービスを手動起動に変更した場合も、機能に不足が生じたときはsc config サービス名 start= autoで自動起動に戻す。

7. DNSサーバーアドレスの設定

目的:DNS(Domain Name System: ドメイン名をIPアドレスに変換する仕組み)サーバーを変更する。以下の例では、Cloudflareの公開DNSサーバー(1.1.1.1、1.0.0.1)を設定する。

DNSサーバーの変更

  1. コマンドプロンプトを管理者権限で起動する(Windowsキーを押すか、スタートメニューをクリックし、「cmd」と入力する。表示された「コマンドプロンプト」を右クリックし、「管理者として実行」を選択する)。

  2. 次のコマンドを実行し、設定対象のインターフェース名を確認する。
    netsh interface show interface

    「インターフェース名」列に「イーサネット」「Wi-Fi」などの名前が表示される。「状態」が「接続されました」となっているものが、現在通信に使用しているインターフェースである。

  3. 確認したインターフェース名を指定して、DNSサーバーアドレスを設定する(例:インターフェース名が「イーサネット」の場合)。
    netsh interface ipv4 set dnsservers name="イーサネット" static 1.1.1.1
    netsh interface ipv4 add dnsservers name="イーサネット" 1.0.0.1 index=2
    ipconfig /flushdns

    1行目で優先DNSサーバーを1.1.1.1に設定し、2行目で代替DNSサーバー(index=2)として1.0.0.1を追加する。3行目はDNSキャッシュをクリアするコマンドである。インターフェース名に空白が含まれる場合(例:「Wi-Fi 2」)も、引用符で囲めばそのまま指定できる。

これらのDNS設定は即時反映されるため、再起動は不要である。

DNS設定が反映されたことの確認

設定したDNSサーバーアドレスは、コマンドプロンプトで確認できる。次のコマンドを実行する。

netsh interface ipv4 show dnsservers

各インターフェースに対し、「静的に構成された DNS サーバー」(環境により「Statically Configured DNS Servers」)として1.1.1.11.0.0.1が表示されれば成功である。DHCPによる自動取得の場合は「DHCP 構成」(「DHCP configured」)と表示される。

特定のインターフェースのみを確認する場合は、インターフェース名を指定する(例:「イーサネット」)。

netsh interface ipv4 show dnsservers name="イーサネット"

次のコマンドでも、DNSサーバーを含むIP構成全体を確認できる。

ipconfig /all

設定を元に戻す方法

DNS設定をDHCP(IPアドレスやDNSサーバーのアドレスを自動的に取得する仕組み)による自動取得に戻す場合は、以下のコマンドを実行する(例:インターフェース名が「イーサネット」の場合)。

netsh interface ipv4 set dnsservers name="イーサネット" dhcp
ipconfig /flushdns

【注意事項】企業や学校などの組織内ネットワークでは、内部ドメインの名前解決に独自のDNSサーバーが必要な場合がある。この場合、公開DNSサーバーに変更すると内部サーバーへ接続できなくなるため、上記の方法でDHCPによる自動取得に戻す。

8. 電源設定の最適化

目的:電源プランを変更することで、システムパフォーマンスの向上または省電力を実現できる。デスクトップPCでは「高パフォーマンス」、ノートPCではバッテリー動作時間を考慮して「バランス」が用いられることが多い。

現在の電源プランの確認

コマンドプロンプトを管理者権限で起動する(Windowsキーを押すか、スタートメニューをクリックし、「cmd」と入力する。表示された「コマンドプロンプト」を右クリックし、「管理者として実行」を選択する)。

次のコマンドを実行する。

powercfg /list

現在アクティブな電源プランには、アスタリスク(*)が表示される。各プランはGUID(一意な識別子)で管理されており、プランの切り替えではこのGUIDを指定する。

電源プランの変更

「高パフォーマンス」に変更する場合は、次のコマンドを実行する。

powercfg /setactive 8c5e7fda-e8bf-4a96-9a85-a6e23a8c635c

「バランス」に戻す場合は、次のコマンドを実行する。

powercfg /setactive 381b4222-f694-41f0-9685-ff5bb260df2e

「省電力」に変更する場合は、次のコマンドを実行する。

powercfg /setactive a1841308-3541-4fab-bc81-f71556f20b4a

これらの設定は即時反映されるため、再起動は不要である。

【注意事項】ノートPCで「高パフォーマンス」を使用すると、バッテリー消費が増加する。バッテリー動作時間を優先する場合は「バランス」または「省電力」に戻す。powercfg /listに目的のプランが表示されない場合は、設定アプリの「システム」→「電源とバッテリー」から電源モードを設定する。

9. その他の設定

  1. ファンクションキーの無効化

    目的:F1キーによるヘルプ表示など、意図しないキー入力を防止する。無効化はScancode Map(キーの入力を別のキーに置き換えるためのレジストリ設定)で行う。

    F1キーのみを無効化する場合は、PowerShellを管理者として実行し、次のコマンドを実行する。

    Set-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Control\Keyboard Layout" -Name "Scancode Map" -Type Binary -Value ([byte[]](
        0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
        0x02,0x00,0x00,0x00,
        0x00,0x00,0x3b,0x00,
        0x00,0x00,0x00,0x00))

    F1〜F12をすべて無効化する場合は、PowerShellを管理者として実行し、次のコマンドを実行する。F2(ファイル名の変更)、F5(更新)、F11(全画面)など、F1以外のファンクションキーはWindowsやアプリケーションの標準的なショートカットとして使われるため、これらを使用する場合は該当するエントリを削除し、エントリ数の値もあわせて変更する。

    Set-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Control\Keyboard Layout" -Name "Scancode Map" -Type Binary -Value ([byte[]](
        0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
        0x0d,0x00,0x00,0x00,
        0x00,0x00,0x3b,0x00,
        0x00,0x00,0x3c,0x00,
        0x00,0x00,0x3d,0x00,
        0x00,0x00,0x3e,0x00,
        0x00,0x00,0x3f,0x00,
        0x00,0x00,0x40,0x00,
        0x00,0x00,0x41,0x00,
        0x00,0x00,0x42,0x00,
        0x00,0x00,0x43,0x00,
        0x00,0x00,0x44,0x00,
        0x00,0x00,0x57,0x00,
        0x00,0x00,0x58,0x00,
        0x00,0x00,0x00,0x00))

    このバイト列は、先頭からヘッダー8バイト、エントリ数(無効化する12キー+終端1=13、16進で0x0d。F1のみの場合は1+終端1=2、16進で0x02)、続いてF1からF12までのスキャンコード(F1=0x3b〜F10=0x44、F11=0x57、F12=0x58)を0へ割り当てる定義、末尾の終端エントリ4バイトから成る。各エントリは[送り先スキャンコード2バイト][元のスキャンコード2バイト]の形式であり、リトルエンディアン(最下位バイトを先に格納する形式)で記述する。送り先を0x0000(無効)にすることでキーを無効化する。

    この設定を反映するには、システムの再起動が必要である。

    設定を元に戻す場合は、PowerShellを管理者として実行し、次のコマンドを実行する。システムの再起動が必要である。

    Remove-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Control\Keyboard Layout" -Name "Scancode Map"
  2. Windowsのパス長制限の解除

    目的:従来の260文字制限(MAX_PATH: Windowsで標準的に課せられているファイルパス長の上限)を解除し、長いファイルパスを扱えるようにする。深い階層のフォルダー構造や長いファイル名を生成する開発環境(Pythonパッケージ、機械学習フレームワーク、Node.jsのnode_modulesなど)で必要となる。

    コマンドプロンプトを管理者権限で起動する(Windowsキーを押すか、スタートメニューをクリックし、「cmd」と入力する。表示された「コマンドプロンプト」を右クリックし、「管理者として実行」を選択する)。

    次のコマンドを実行する。

    reg add "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\FileSystem" /v "LongPathsEnabled" /t REG_DWORD /d "1" /f

    この設定を反映するには、システムの再起動が必要である。

    設定が反映されたことは、コマンドプロンプトで次のコマンドを実行して確認できる。

    reg query "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\FileSystem" /v "LongPathsEnabled"

    LongPathsEnabled REG_DWORD 0x1と表示されれば有効化されている。0x0の場合は無効である。この値が有効でも、長いパスに対応していないアプリケーションでは260文字を超えるパスを扱えない。その場合は、フォルダー階層の浅い場所(例:C:\work)で作業する。

    設定を元に戻す場合は、次のコマンドを実行する。システムの再起動が必要である。

    reg add "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\FileSystem" /v "LongPathsEnabled" /t REG_DWORD /d "0" /f
  3. Windowsエクスプローラーでの隠しファイルとファイル名拡張子の表示

    目的:ファイル名拡張子(.pdf、.pptxなど)と隠しファイルを表示する。ファイルの種類を把握でき、設定ファイルなどへのアクセスも可能になる。

    コマンドプロンプトを起動する(Windowsキーを押して「cmd」と入力し、表示された「コマンドプロンプト」をクリックする)。書き込み先は現在のユーザー領域(HKCU)であるため、管理者権限は不要である。

    次のコマンドを実行する。

    powershell -command "Set-ItemProperty -Path 'HKCU:\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced' -Name 'Hidden' -Value 1"
    powershell -command "Set-ItemProperty -Path 'HKCU:\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced' -Name 'ShowSuperHidden' -Value 1"
    powershell -command "Set-ItemProperty -Path 'HKCU:\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced' -Name 'HideFileExt' -Value 0"

    この設定は、エクスプローラーの再起動、または一度サインアウトして再度サインインすると反映される。システムの再起動でも反映される。

    設定が反映されたことは、コマンドプロンプトで次のコマンドを実行して確認できる。

    reg query "HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced" /v Hidden
    reg query "HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced" /v ShowSuperHidden
    reg query "HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced" /v HideFileExt

    Hidden0x1(隠しファイルを表示)、ShowSuperHidden0x1(保護されたオペレーティングシステムファイルを表示)、HideFileExt0x0(拡張子を表示)であれば、表示設定が有効になっている。元に戻した場合は、それぞれ0x20x00x1と表示される。

    設定を元に戻す(隠しファイルと拡張子を非表示にする)場合は、次のコマンドを実行する。

    powershell -command "Set-ItemProperty -Path 'HKCU:\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced' -Name 'Hidden' -Value 2"
    powershell -command "Set-ItemProperty -Path 'HKCU:\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced' -Name 'ShowSuperHidden' -Value 0"
    powershell -command "Set-ItemProperty -Path 'HKCU:\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced' -Name 'HideFileExt' -Value 1"

10. ディスククリーンアップとデフラグ

目的:ディスククリーンアップで不要ファイルを削除し、空き容量を確保する。デフラグ(最適化)は、HDD上のファイル断片化を解消する。ゼロフィルは、削除済みデータを復元不能にする。

  1. ディスククリーンアップ

    コマンドプロンプトを管理者権限で起動する(Windowsキーを押すか、スタートメニューをクリックし、「cmd」と入力する。表示された「コマンドプロンプト」を右クリックし、「管理者として実行」を選択する)。

    対話的にクリーンアップ対象を選んで実行する場合は、次のコマンドを実行する。

    cleanmgr /sageset:1
    cleanmgr /sagerun:1

    このコマンドの説明:

    • /sageset:1: 番号1のプロファイルとして、削除対象を選択するダイアログを表示する。一度設定すれば次回以降の選択は不要
    • /sagerun:1: 番号1のプロファイルで指定された対象を削除する

    ディスク容量が極端に少なく、緊急のクリーンアップが必要な場合は、次のコマンドを使用する。ユーザーへの確認なしに動作し、限定的な対象のみを自動削除する。削除内容は選択できない。

    cleanmgr /verylowdisk
  2. デフラグと、Cドライブの空き領域のゼロフィルを行う。

    事前確認:以下のdefragコマンドはHDD専用である。実行前にPowerShellで次のコマンドを実行し、ドライブの種別(MediaType)を確認する。

    Get-PhysicalDisk | Format-Table FriendlyName, MediaType, Size

    MediaTypeが「HDD」の場合のみ、続くdefragおよびsdeleteを実行する。「SSD」の場合は実行しない。

    sdeleteは、Microsoft Sysinternalsが提供する削除ツールである。事前にダウンロードが必要である。

    sdeleteのURL: https://learn.microsoft.com/ja-jp/sysinternals/downloads/sdelete

    コマンドプロンプトを管理者権限で起動する(Windowsキーを押すか、スタートメニューをクリックし、「cmd」と入力する。表示された「コマンドプロンプト」を右クリックし、「管理者として実行」を選択する)。

    sdeleteのZIPファイルを展開し、sdelete.exeがあるフォルダーへ移動するか、sdelete.exeをPATHの通ったフォルダーに置いてから実行する。

    HDDの場合のみ、次のコマンドを実行する。

    defrag C: /X
    sdelete.exe -accepteula -z C:

    defragコマンドの説明:

    • C:: 対象ボリュームをCドライブに限定(全ボリュームを対象とする/Cオプションは、SSDが含まれる場合に不要な書き込みが発生するため使用しない)
    • /X: 空き領域の統合を実行

    sdeleteコマンドの説明:

    • -accepteula: 使用許諾(EULA)への同意をコマンドライン引数で行う。このオプションを省略すると、初回実行時に対話的なプロンプトが表示されて処理が停止する
    • -z: 空き領域をゼロで上書きする

【注意事項】SSD(ソリッドステートドライブ)ではWindowsが自動でTRIM(SSDに削除済みブロックを通知し、性能を維持するコマンド)を実行するため、デフラグは不要である。SSDに対するdefrag /Xおよびゼロフィル(sdelete -z)は、書き込み量を増やすだけであるため実行しない。HDDの場合でも、ゼロフィルは空き容量に比例した時間を要するため、時間に余裕があるときに実行する。

11. システムの一般的な問題と解決方法

システムで発生する一般的な問題と解決方法を以下に示す。

【注意事項】上記の手順で解決しない場合は、システムの復元機能で以前の正常な状態に戻す。ハードウェアの故障が疑われる場合は、PCの製造元のサポートに問い合わせる。