【解決方法】レジストリでコンポーネント キーを検出する方法

[ad_1]

Windows レジストリに「スマート」キーがいくつかあるようです。 私が賢いと言っているのは、それらがそこにあることを意味します (RegEdit はそれらを認識します) が、検索を実行しても (OpenSubKey/GetSubKey ルーチンを介して) 見つかりません。

適例:

レジストリには次のキーがあります。

Computer\HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Installer\UserData\S-1-5-18\Components\044A7038A79602FACF77629B3A9FFA16

OpenKey/GetSubkey メソッドを使用すると、キーではない 6 つのサブキーが取得されます

044A7038A79602FACF77629B3A9FFA16

.

インストール中に追加されたキーのファイルを作成してから、それらを削除したいと考えています。 なんで? インストーラーを実行すると問題なくインストールされますが、アプリケーションをアンインストールすることはできません。

削除とクリーンアップを実行するには、まずキーを見つけなければなりません。

私が試したこと:

私は次のことを試しました

TopKey = CurrentKey.OpenSubKey(fullpath, RegistryKeyPermissionCheck.ReadSubTree, Lrights[K]);

CurrentKey の場所

HKEY_LOCAL_MACHINE

64 ビットと 32 ビットの両方で開かれ、

Lrights[K]

のすべての列挙された権利です

System.Security.AccessControl.RegistryRights

管理者権限でデバッガーを実行しています。

最初の HKEY_LOCAL_MACHINE を開くコードは次のとおりです。

RegistryKey.OpenBaseKey(Microsoft.Win32.RegistryHive.LocalMachine, RegistryView.Registry32);

また

RegistryKey.OpenBaseKey(Microsoft.Win32.RegistryHive.LocalMachine, RegistryView.Registry64);

解決策 1

レジストリには「スマート キー」などの「スマート」なものはありません。

表示されているのは、別の順序に再配置されたコンポーネント GUID データです。 5、6年ほど前に出会いました。 私のメモは見つかりませんが、GUID 内のさまざまなバイト グループが再配置されて、Components キーの下に表示されているキー値を構成しています。

独自の MSI を構成し、それに機能とコンポーネントを追加できます。 コンポーネントに指定した GUID をメモし、テスト マシンにインストールします。 レジストリ内のコンポーネント データを調べると、コンポーネント キー データが見つかり、メモした GUID と比較されます。 2つを比較して、再配置が何であるかを理解できます。

編集:
考える こんな感じになりました。 GUID を取得し、その最初の 3 つのセクションを逆にします。 次の 2 つのセクションでは、すべての文字のペアが入れ替わっています。

{3F7E7201-428F-4624-BE2A-AFE115BED227}
 1027E7F3 F824 4264 EBA2 FA1E51EB2D72

becomes this in the Components key:
1027E7F3F8244264EBA2FA1E51EB2D72

[ad_2]

コメント

タイトルとURLをコピーしました