
私の Windows 10 PC には、開発者プロファイルと通常のプロファイルの 2 つのユーザー プロファイルがあります。開発者プロファイルでは、.reg
アクティブな Git Bash プロンプトで Windows ターミナル インスタンスを開くコンテキスト メニュー項目を追加するファイルを実行しました。
驚いたことに、他の Windows プロファイルのコンテキスト メニューにも新しいメニュー オプションが表示されましたが、クリックすると、指定されたパスまたはファイルにアクセスできないというエラーが表示されました。これは、通常のプロファイルに Windows Terminal がインストールされていないためです。また、通常のプロファイルで問題のレジストリ キーを削除すると、開発者プロファイルのコンテキスト メニューからもメニュー項目が削除されます。
同じ Windows レジストリが 2 つのプロファイル間で共有されており、これが原因でしょうか? もしそうなら、各ユーザー プロファイルに個別のレジストリを作成するにはどうすればよいでしょうか?
登録ファイル:
Windows Registry Editor Version 5.00
[HKEY_CLASSES_ROOT\Directory\Background\shell\windowsterminal]
@="Open Windows Terminal Here"
"Icon"="%USERPROFILE%\\AppData\\Local\\WTerminal\\terminal.ico"
[HKEY_CLASSES_ROOT\Directory\Background\shell\windowsterminal\command]
@="wt new-tab --profile \"Git Bash\" --startingDirectory ."
答え1
はい、いいえ。HKEY_LOCAL_MACHINE
共有されますか、HKEY_CURRENT_USER
ユーザーごとにプライベートになりますか。
一方、HKEY_CLASSES_ROOTはバーチャル木は実際には統合されたビューユーザーごとのものHKCU\Software\Classes
とHKLM\Software\Classes
ツリーのものの両方です。(これは分離がなかった Windows 9x からの名残です。)
HKCR への書き込みは、ユーザーの権限と、更新されるキーが元々 HKCU からロードされたか HKLM からロードされたかに応じて、個人レジストリまたはシステム レジストリのいずれかに書き込まれます。
ユーザーごとのファイル関連付けを行うには、HKEY_CURRENT_USER\Software\Classes
HKEY_CLASSES_ROOT を使用する代わりに、それらを配置します。同様に、システム全体の関連付けを作成するには、それらを HKLM に配置します。
答え2
はい、レジストリは 1 つだけです。レジストリには、実際のハイブがいくつかと、「仮想」ハイブがいくつか存在します。最も重要な実際のハイブは、HKEY_LOCAL_MACHINE
とですHKEY_USERS
。後者が示すように、複数のユーザーの値を保持します。
今は、1 つのサブキーHKEY_CURRENT_USER
の仮想マッピングです。これは、大まかに言えば、プロセスを開始したユーザーのキーです。したがって、プロセスによってマッピングが異なる場合があります。同様に、そのサブキーをマージして形成された仮想ビューもあります。HKEY_USERS
HKEY_CURRENT_USER
HKEY_CLASSES_ROOT
HKEY_LOCAL_MACHINE
HKEY_USERS
レジストリはアクセス制御リスト (ACL) をサポートしているため、他のユーザーのキーを表示できない場合があります。