コマンドプロンプトやPowerShell等のターミナル設定を初期化する方法

2 min read

この記事での PowerShell とは、Windows 10に標準搭載されている Windows PowerShell のことを指し、クロスプラットフォームに対応した PowerShell Core ではありません。

普段、コマンドプロンプトやPowerShell等のターミナルをお気に入りの配色やフォントで使うと楽しくなるが、カスタマイズしすぎて元に戻したくなった場合にターミナル設定を初期化する方法を備忘録として書く。

ターミナル設定はどこに保存されているのか

設定が保存されている場所は複数あり、以下の順で読み込まれる。

  1. conhostv2.dll でハードコーディングされた設定
  2. レジストリ HKEY_CURRENT_USER\Console にある、ユーザが構成した設定
    (既定値 で設定したもの)
  3. レジストリ HKEY_CURRENT_USER\Console\{サブキー} にある、ターミナルアプリケーション毎の設定
    (ターミナルアプリケーションを直接起動し、プロパティ で設定したもの)
  4. ショートカット (.lnk) ファイル内の設定
    (ターミナルアプリケーションをショートカット経由で起動し、プロパティ で設定したもの)

これらを順に読み込む際、重複した設定項目は最後の設定で上書きされます。

以下のサイトに詳しく説明がある。

https://devblogs.microsoft.com/commandline/understanding-windows-console-host-settings

方法

ターミナル設定が保存されたレジストリの削除

レジストリを操作するため、操作するキーを 右クリック > エクスポート して必ずバックアップを取った上で慎重に作業してください。

  1. Win + Rファイル名を指定して実行 を開く
  2. regedit を入力して Enter を押す
  3. 左側のツリーから HKEY_CURRENT_USER\Console を探し、右クリック > 削除

オリジナルのショートカットをもらってくる

今回はオリジナルのショートカットが欲しいので、新規ユーザアカウントを作成する際に用いられる既定のプロファイルのテンプレートよりもらってくる。

コマンドプロンプト

コマンドプロンプトは、基本的にスタートメニューなどから起動する場合が多いはず。
これは、%AppData%\Microsoft\Windows\Start Menu\Programs\System Tools 内のショートカット経由で起動している。

PowerShellで下記コマンドを入力することでオリジナルのショートカットに上書きされる。

Copy-Item -Path ($Env:SystemDrive + "\Users\Default\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\System Tools\Command Prompt.lnk") -Destination ($Env:AppData + "\Microsoft\Windows\Start Menu\Programs\System Tools") -Force

PowerShell

PowerShellは、基本的にスタートメニューもしくは Win + X > I などから起動する場合が多いはず。
これは、%AppData%\Microsoft\Windows\Start Menu\Programs\Windows PowerShell 内のショートカット経由で起動している。

PowerShellで下記コマンドを入力することでオリジナルのショートカットに上書きされる。

@("", " (x86)") | ForEach-Object -Process {Copy-Item -Path ($Env:SystemDrive + "\Users\Default\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Windows PowerShell\Windows PowerShell" + $_ + ".lnk") -Destination ($Env:AppData + "\Microsoft\Windows\Start Menu\Programs\Windows PowerShell") -Force}

初期化完了


コマンドプロンプト

PowerShell

あとがき

これらの作業を一発で実行出来るツールを作成したいところ。
この記事を書く上でPowerShellのコマンドを調べる機会があったが、日常的に使いこなせるように勉強していきたいと思う💪

Discussion

ログインするとコメントできます