【レジストリ豆知識】いちいち値やキーを削除する必要はない!

Windows10,Windows11

レジストリエディターアイコン

この記事では、読者さんから教えていただいたレジストリエディターの豆知識について書きます。

値のデータを削除しなくても、無効化できます。

レジストリエディターの豆知識3選画像

当サイトの読者さんから、レジストリエディターの豆知識を教えていただきました。「こ、これは便利だ…」と思ったので、記事にして皆さんに共有したいと思います。

今回紹介する知識は、以下の3つです。

  • 値のデータは削除しなくても、先頭にセミコロン記号(;)をつければ、無効化できる
  • 「LegacyDisable」文字列値でキー、その値を無効化できる
  • 「Blocked」フォルダー内に値のデータを書けば、無効化できる

僕は、「Blocked」だけ知っていました。他2つは一切知りませんでした。そもそもレジストリを頻繁に弄らないから、知る機会もなかったですね…。

3つに共通する点は、ずばり「キーや値のデータを削除しなくても、効果を無効化できる」という点です。

例えば、右クリックメニューにある特定の項目を削除したい場合、その項目に該当するキー・文字列値・値のデータなどを削除する必要があります。

しかし、この方法だと、元に戻したい時に大変です。一度削除してしまっているので、ネットから正しいキーや値を探すか、メモしていた場合は、それを見ながら、作成し直さないといけません。削除したことで、何か不具合が起こるのも怖いです。

そこで、今回紹介する知識が役立ちます。

例えば、「{f3d06e7c-1e45-4a26-847e-f9fcdee59be0}」といった値のデータを無効化したい場合、先頭にセミコロン記号(;)を記述します。セミコロンを書くことで、そのあとの文字列値が意味を持たなくなり、無効化されます。削除したときと同様の効果を得られます。

元に戻したい時は、先頭に記述したセミコロン記号を削除するだけです。

レジストリ操作系の記事では、大体キーや値自体の削除が紹介されていますが、削除ではなく無効化という方法もあるんだよ~という一つの知識に役立てば、幸いです。

レジストリエディターの3つの豆知識

値のデータは削除しなくても、先頭にセミコロン記号(;)をつければ、無効化できる

「{f3d06e7c-1e45-4a26-847e-f9fcdee59be0}」といった種類の文字列値(値のデータ)は、先頭にセミコロン記号(;)をつけることで、無効化できます。

正確には、既存の値のデータ以外にすれば、勝手に無効化するという性質を利用しています。セミコロン記号自体に、無効化の意味はありません。

例えば、Windows11の右クリックメニューにある「パスのコピー」項目をレジストリを使って削除したいとします。

Windows11の右クリックメニューにある「パスのコピー」画像

通常なら、以下の場所にアクセス→「CopyAsPathMenu」内にある文字列値(既定)をダブルクリック→値のデータを全部削除という流れです。これで、右クリックから、「パスのコピー」項目が消えます。

HKEY_CLASSES_ROOT\AllFilesystemObjects\shellex\ContextMenuHandlers\CopyAsPathMenu
レジストリエディターで「セミコロン記号」を使う手順画像1

参考:【Windows11】右クリックの「パスのコピー」を削除する方法

しかし、これだと「やっぱり戻したい!」って時に、再び同じ値のデータを書く必要があります。大変ですよね。いざという時に不便です。

そこで、セミコロン記号の出番です。

該当のレジストリキーにアクセス→文字列値をダブルクリックまでは、通常の方法と一緒ですが、値のデータは削除せずに、先頭にセミコロン記号(;)を記述します。元々書かれているデータには、一切手を加えません。

レジストリエディターで「セミコロン記号」を使う手順画像2

「パスのコピー」項目の場合は、以下のようになります。括弧内ではなく、括弧の外です。本当に1番先頭に記述します。

;{f3d06e7c-1e45-4a26-847e-f9fcdee59be0}

これで、右クリックから「パスのコピー」が消えます。値のデータを削除しなくても、無効化できました。

Windows11の右クリックから、「パスのコピー」を削除した画像

元に戻す時は、書き込んだセミコロン記号を削除するだけです。元々の値のデータは変更していないので、セミコロンを削除するだけで、元通りの状態になります。

実は、セミコロン記号じゃなくてもいい

セミコロン記号と連呼していますが、実はセミコロン記号じゃなくてもいいです。

僕は、PC初心者なので、詳しいことは分かりませんが、「-」や「:」などでも同様に無効化できました。結局、初期の「値のデータ」以外にする&他のキーと被らなかったら、何でもいいんだと思います。

CSS(サイトのデザインを整えることができるスタイルシート言語)の場合、コメントアウトするのに、「セミコロン記号」を使います。

僕は、CSSにほんのちょっとだけ触れているので、一緒の感じにしたいと思い、勝手にセミコロン記号をレジストリエディターでも使うようにしています。

皆さんにとって、セミコロン記号以外に分かりやすい記号があれば、そちらを使って構いません。

セミコロン、コロン、マイナス記号など、複数の記号が混合するのは、やめたほうがいいです。見た目も悪いし、なんで分けているんだと分からなくなります。

値のデータを無効化する時は、「〇〇記号を使う」といったように、自分の中で統一しておくといいかなと思います。ローマ字もおすすめしません。無難にセミコロンがいいかなと思います。

「LegacyDisable」文字列値でキー、その値を無効化できる

shellキー内にある指定のキー内に「LegacyDisable」文字列値を追加することで、その値全体を無効化できます。

例えば、Wordファイルを右クリックした時に表示される「開く」、「編集」、「新規」、「印刷」項目を消してみたいと思います。

Windows10の右クリックメニューにあるWord関連の画像

参考:Wordファイルの右クリック項目を開く、編集などを削除する方法

レジストリエディターを起動して、以下の場所にアクセスします。

HKEY_CLASSES_ROOT\Word.Document.12\Shell

「Shell」キー内には、色々な右クリック項目の情報が書かれています。Editが編集、Printが印刷といったように、それぞれの項目ごとに分かれています。

レジストリエディターの「Word.Document.12」画像

普通なら、このキーを右クリック→削除をクリックする必要があります。めんどくさいです。キーを削除することで、中の文字列値なども全部消えてしまいます。戻す時に手間です。

そこで、「LegacyDisable」の登場です。消したいキー(例:Edit)を開いて、空いているところを右クリック→新規→「文字列値(S)」をクリックします。

レジストリエディターで「LegacyDisable」を追加する手順画像1

名前を「LegacyDisable」にします。誤字っても、PCが壊れることはないですが、効果を発揮しないので注意です。

文字列値の名前自体を変更します。中の値のデータは、何も書かなくてOKです。

レジストリエディターで「LegacyDisable」を追加する手順画像2

ポイントですが、Shellキー直下に配置するわけではありません。Shellキー内にあるそれぞれの中に配置します。

レジストリエディターで「LegacyDisable」を追加する手順画像3

つまり、今回の場合、Wordの「開く(Open)」、「編集(Edit)」、「新規(New)」、「印刷(Print)」の4つを削除したいので、「LegacyDisable」が4つ必要です。

ちなみに、コマンドプロンプトを管理者権限で起動して、以下のコマンドを実行することでも追加できます。

reg add "HKEY_CLASSES_ROOT\Word.Document.12\Shell\Edit" /v LegacyDisable /f
reg add "HKEY_CLASSES_ROOT\Word.Document.12\Shell\New" /v LegacyDisable /f
reg add "HKEY_CLASSES_ROOT\Word.Document.12\Shell\Open" /v LegacyDisable /f
reg add "HKEY_CLASSES_ROOT\Word.Document.12\Shell\Print" /v LegacyDisable /f
コマンドプロンプトでレジストリ操作をしている画像

「LegacyDisable」文字列値を追加すると、その項目が右クリックから消えます。もし消えない場合は、誤字がないかどうか、配置する場所を間違えていないかをチェックします。

Windows10の右クリックメニューにあるWord関連の項目を削除した画像

やっぱり戻したくなった時は、書き込んだ「LegacyDisable」を削除するだけです。

またいつか使うかも…という場合は、「LegacyDisable」の先頭にセミコロン記号をつけることで、無効化できます。まぁ、「LegacyDisable」くらいは、残すんじゃなくて、普通に削除したほうがいいと思います。使っていないのに残り続けるって気分的に嫌です。

「Blocked」フォルダー内に値のデータを書けば、無効化できる

特定の場所に「Blocked」を作成して、その中に、ブロックしたい文字列値(値のデータ)を書き込むことで、その項目をブロックできます。削除したい時は、書き込んだ文字列値を削除するだけです。

以下の場所です。

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Shell Extensions\Blocked
現在ログインしているユーザーだけに絞りたい場合

上記場所は、そのPC全体に対して反映されます。ユーザーは関係ありません。つまり、上記の場所でブロックした場合、AとBのユーザー両方に効果があります。

「ログインしているAのユーザーだけに反映させたい…!」という場合は、以下の場所になります。最初のルートキーの場所が異なります。「HKEY_LOCAL_MACHINE」がPC全体、「HKEY_CURRENT_USER」が現在ログインしているユーザーです。

HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\Shell Extensions\Blocked

初期では、「Blocked」キーがないと思うので、作成します。レジストリエディターを開いて、「Shell Extensions」にアクセスします。キー上で右クリック→新規→「キー」をクリックします。

レジストリエディターの「Blocked」を使う手順画像1

「新しいキー #1」の名前を、「Blocked」にします。誤字に注意です。作成できたら、その中にブロックしたい項目の値を書き込んでいきます。

試しに、Windows11で表示される「ターミナルで開く」をブロックしてみたいと思います。エクスプローラーのフォルダーや、空いている場所を右クリックすると表示されます。

Windows11の右クリックメニューにある「ターミナルで開く」画像

レジストリエディターで、作成した「Blocked」キーを開きます。

空いているところを右クリック→新規→「文字列値」をクリックします。僕は、ほかの項目をブロックしているので、沢山登録されていますが、初めての方は、何もない状態です。

レジストリエディターの「Blocked」を使う手順画像2

名前を「ターミナルで開く」項目の値にします。値自体の調べ方は、僕も知りません。ネットで調べただけです。中身の値のデータは、何も書かなくてOKです。

レジストリエディターの「Blocked」を使う手順画像3
{9F156763-7844-4DC4-B2B1-901F640F5155}

これで、「ターミナルで開く({9F156763-7844-4DC4-B2B1-901F640F5155})」をブロックしたことになります。右クリックから消えます。

右クリックメニューから「ターミナルで開く」項目を消した画像

やっぱり戻したくなった場合は、作成した文字列値を削除します。右クリック→削除か、Deleteです。

レジストリエディターの「Blocked」を使う手順画像4

余談ですが、コマンドプロンプト(管理者権限)から実行して、追加することも可能です。「Blocked」を作成していない場合でも、自動的に生成してくれます。

reg add "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Shell Extensions\Blocked" /v {9F156763-7844-4DC4-B2B1-901F640F5155} /f

参考:【Windows】右クリックの「ターミナルで開く」を削除する方法

感想

以上、読者さんから教えていただいたレジストリエディターの豆知識でした。

こういう方法もあるのか~と感心です。感謝感謝です。

Posted by ナポリタン寿司