【レジストリ豆知識】いちいち値やキーを削除する必要はない!
この記事では、レジストリエディターの豆知識について書きます。
値のデータを削除しなくても、無効化できます。
当サイトの読者さんから、レジストリエディターの豆知識を教えていただきました。「こ、これは便利だ…」と思ったので、記事にして皆さんに共有したいと思います。
今回紹介する知識は、以下の3つです。
- 値のデータは削除しなくても、先頭にセミコロン記号(;)をつければ、無効化できる
- 「LegacyDisable」文字列値でキー、その値を無効化できる
- 「Blocked」フォルダー内に値のデータを書けば、無効化できる
僕は、「Blocked」だけ知っていました。他2つは一切知りませんでした。そもそもレジストリを頻繁に弄らないから、知る機会もなかったですね…。3つに共通する点は、「キーや値のデータを削除しなくても、効果を無効化できる」という点です。
例えば、右クリックメニューにある特定の項目を削除したい場合、その項目に該当するキー・文字列値・値のデータなどを削除する必要があります。
しかし、この方法だと、元に戻したい時に大変です。一度削除してしまっているので、ネットから正しいキーや値を探すか、メモしていた場合は、それを見ながら、作成し直さないといけません。削除したことで、何か不具合が起こるのも怖いです。
そこで、今回紹介する知識が役立ちます。
例えば、「{f3d06e7c-1e45-4a26-847e-f9fcdee59be0}」といった値のデータを無効化したい場合、先頭にセミコロン記号(;)を記述します。セミコロンを書くことで、そのあとの文字列値が意味を持たなくなり、無効化されます。削除したときと同様の効果を得られます。
元に戻したい時は、先頭に記述したセミコロン記号を削除するだけです。
レジストリ操作系の記事では、大体キーや値自体の削除が紹介されていますが、削除ではなく無効化という方法もあるんだよ~という一つの知識として役立てば幸いです。
レジストリエディターの3つの豆知識
値のデータは削除しなくても、先頭にセミコロン記号(;)をつければ、無効化できる
「{f3d06e7c-1e45-4a26-847e-f9fcdee59be0}」といった種類の文字列値(値のデータ)は、先頭にセミコロン記号(;)をつけることで、無効化できます。
正確には、既存の値のデータ以外にすれば、勝手に無効化するという性質を利用しています。セミコロン記号自体に、無効化の意味はありません。
例えば、Windows11の右クリックメニューにある「パスのコピー」項目をレジストリを使って削除したいとします。
通常なら、以下の場所にアクセス→「CopyAsPathMenu」内にある文字列値(既定)をダブルクリック→値のデータを全部削除という流れです。これで、右クリックから、「パスのコピー」項目が消えます。
HKEY_CLASSES_ROOT\AllFilesystemObjects\shellex\ContextMenuHandlers\CopyAsPathMenu
参考:【Windows11】右クリックの「パスのコピー」を削除する方法
しかし、これだと「やっぱり戻したい!」って時に、再び同じ値のデータを書く必要があります。大変ですよね。いざという時に不便です。
ここでセミコロン記号の出番です。該当のレジストリキーにアクセス→「文字列値」をダブルクリックまでは、通常の方法と一緒ですが、値のデータは削除せずに、先頭にセミコロン記号(;)を記述します。元々書かれているデータには、一切手を加えません。
「パスのコピー」項目の場合は、以下のようになります。括弧内ではなく、括弧の外です。本当に1番先頭に記述します。
;{f3d06e7c-1e45-4a26-847e-f9fcdee59be0}
これで、右クリックから「パスのコピー」が消えます。値のデータを削除しなくても、無効化できました。
元に戻す時は、書き込んだセミコロン記号を削除するだけです。元々の値のデータは変更していないので、セミコロンを削除するだけで、元通りの状態になります。
セミコロン記号と連呼していますが、実はセミコロン記号じゃなくてもいいです。
僕は、PC初心者なので、詳しいことは分かりませんが、「-」や「:」などでも同様に無効化できました。結局、初期の「値のデータ」以外にする&他のキーと被らなかったら、何でもいいんだと思います。
CSS(サイトのデザインを整えることができるスタイルシート言語)の場合、コメントアウトするのに、「セミコロン記号」を使います。
僕は、CSSにほんのちょっとだけ触れているので、一緒の感じにしたいと思い、勝手にセミコロン記号をレジストリエディターでも使うようにしています。
皆さんにとって、セミコロン記号以外に分かりやすい記号があれば、そちらを使って構いません。
セミコロン、コロン、マイナス記号など、複数の記号が混合するのは、やめたほうがいいです。見た目も悪いし、なんで分けているんだと分からなくなります。
値のデータを無効化する時は、「〇〇記号を使う」といったように、自分の中で統一しておくといいかなと思います。ローマ字もおすすめしません。無難にセミコロンがいいかなと思います。
「LegacyDisable」文字列値でキー、その値を無効化できる
shellキー内にある指定のキー内に「LegacyDisable」文字列値を追加することで、その値全体を無効化できます。
例えば、Wordファイルを右クリックした時に表示される「開く」、「編集」、「新規」、「印刷」項目を消してみたいと思います。
参考:Wordファイルの右クリック項目を開く、編集などを削除する方法
レジストリエディターを起動して、以下の場所にアクセスします。
HKEY_CLASSES_ROOT\Word.Document.12\Shell
「Shell」キー内には、色々な右クリック項目の情報が書かれています。Editが編集、Printが印刷といったように、それぞれの項目ごとに分かれています。
普通なら、このキーを右クリック→削除をクリックする必要があります。めんどくさいです。キーを削除することで、中の文字列値なども全部消えてしまいます。戻す時に手間です。
「LegacyDisable」の登場です。消したいキー(例:Edit)を開いて、空いているところを右クリック→新規→「文字列値(S)」をクリックします。
名前を「LegacyDisable」にします。誤字っても、PCが壊れることはないですが、効果を発揮しないので注意です。
文字列値の名前自体を変更します。中の値のデータは、何も書かなくてOKです。
ポイントですが、Shellキー直下に配置するわけではありません。Shellキー内にあるそれぞれの中に配置します。
つまり、今回の場合、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」文字列値を追加すると、その項目が右クリックから消えます。もし消えない場合は、誤字がないかどうか、配置する場所を間違えていないかをチェックします。
やっぱり戻したくなった時は、書き込んだ「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」にアクセスします。キー上で右クリック→新規→「キー」をクリックします。
「新しいキー #1」の名前を、「Blocked」にします。誤字に注意です。作成できたら、その中にブロックしたい項目の値を書き込んでいきます。
試しに、Windows11で表示される「ターミナルで開く」をブロックしてみたいと思います。エクスプローラーのフォルダーや、空いている場所を右クリックすると表示されます。
レジストリエディターで、作成した「Blocked」キーを開きます。
空いているところを右クリック→新規→「文字列値」をクリックします。僕は、ほかの項目をブロックしているので、沢山登録されていますが、初めての方は、何もない状態です。
名前を「ターミナルで開く」項目の値にします。値自体の調べ方は、僕も知りません。ネットで調べただけです。中身の値のデータは、何も書かなくてOKです。
{9F156763-7844-4DC4-B2B1-901F640F5155}
これで、「ターミナルで開く({9F156763-7844-4DC4-B2B1-901F640F5155})」をブロックしたことになります。右クリックから消えます。
やっぱり戻したくなった場合は、作成した文字列値を削除します。右クリック→削除か、Deleteです。
余談ですが、コマンドプロンプト(管理者権限)から実行して、追加することも可能です。「Blocked」を作成していない場合でも、自動的に生成してくれます。
reg add "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Shell Extensions\Blocked" /v {9F156763-7844-4DC4-B2B1-901F640F5155} /f
参考:【Windows】右クリックの「ターミナルで開く」を削除する方法
感想
以上、読者さんから教えていただいたレジストリエディターの豆知識でした。
こういう方法もあるのか~と感心です。感謝感謝です。
不要な項目を右クリックメニューから削除する方法は、以下の記事を参考ににしてみてください。