2016-07-09 11 views
1

私はあなたがレジストリと対話できるようにするコンソールアプリケーションを作成しています。アプリケーションは文字列pathが空に設定された状態で開始します。ユーザーがlsと入力すると、すべてのレジストリハイブが一覧表示されます(ローカルマシンの最上位にあるため)。しかし、いくつかの広範な研究の後、私は現在のマシン上ですべてのレジストリハイブを取得する方法を見つけることができません。これらの巣箱がいつもになると仮定するのはどれくらい安全でしょうか?レジストリハイブが常に同じであると仮定するのはどれくらい安全ですか?

HKEY_CLASSES_ROOT 
HKEY_CURRENT_USER 
HKEY_LOCAL_MACHINE 
HKEY_USERS 
HKEY_CURRENT_CONFIG 

これらが常に存在するとは考えにくい場合は、どうすれば動的に取得できますか?

(およびごめん「じんましん」はルートレベルのサブキーの正しい用語ではない場合、私はレジストリを扱うにはかなり新しいです)

+0

彼らはハード 'Microsoft.Win32.RegistryHive'列挙型にコード化されているので、私は、彼らが常にあるだろうと仮定することができます... – Eser

答えて

2

「標準じんましんは、」文書化されているので、それらは変更されません。

https://msdn.microsoft.com/en-us/library/windows/desktop/ms724877(v=vs.85).aspx

キーを開くには、アプリケーションがすでに開いている レジストリ内の別のキーへのハンドルを指定する必要があります。システムでは、常に開いている定義済みキー が定義されています。あらかじめ定義されたキーは、アプリケーションが のレジストリ内をナビゲートするのを助け、システム の管理者がデータのカテゴリを操作できるツールを開発することを可能にします。レジストリに データを追加するアプリケーションは、常に の定義済みキーの枠組み内で動作する必要があるため、管理ツールは新しい データを見つけて使用できます。

アプリケーションは、これらのキーに対するハンドルをレジストリのエントリポイントとして使用できます。これらのハンドルはレジストリのすべての実装で有効ですが、ハンドルの使用はプラットフォームによって異なる場合があります。

HKEY_CLASSES_ROOTはハイブではありませんが、他のハイブへのビューですが、常に開いている定義済みのキーです。

https://msdn.microsoft.com/en-us/library/windows/desktop/ms724836(v=vs.85).aspx

彼らはMicrosoft.Win32.RegistryHive列挙でもあるという上記参照@Eserのコメント。

https://msdn.microsoft.com/en-us/library/ctb3kd86(v=vs.110).aspx

+0

おかげで、私はおそらく、コードでじんましんを検出できる方法があります私の蕁麻疹は少し違っているので、他の人もそうだと思うのですか? (私は 'HKEY_CLASSES_ROOT'を持っていますが、それは標準として文書化されていません) – carefulnow1

+0

私は自分の答えを更新しました。 'HKEY_CLASSES_ROOT'はハイブではなく、他のハイブの組み合わせのビューです。それは、常に開いている定義済みのキーとして2番目のリンクに表示されています。 –

+0

それで 'HKEY_CLASSES_ROOT'のすべてが他のハイブの他の場所へのショートカットですか? – carefulnow1