2011-12-21 7 views
0

私は、実行されている各コンピュータの構成を監査するために使用される.netアプリケーションに取り組んでいます。.netの任意のレジストリキーを参照する便利な方法はありますか?

私は、たとえば、文字列で指定されたレジストリキーの値を読むことができるようにしたいと思います:HKEY_LOCAL_MACHINE\SOFTWARE\MyOrganization\MyProgram

.NETでこのキーのハンドルを取得するために、私は次のように記述します

RegistryKey registryKey = Registry.LocalMachine.OpenSubKey(@"SOFTWARE\\MyOrganization\\MyProgram); 

ご覧のとおり、Registry.LocalMachineを使用してHKEY_LOCAL_MACHINEを参照しています。

Registryオブジェクトのこれらのフィールドを参照せずに、レジストリキーを名前で参照する方法はありますか?

+0

文字列を最初のスラッシュまで解析し、 'HKEY_LOCAL_MACHINE'を見て、次に' Registry.LocalMachine'を参照するものを書くことができます。これを行うより良い方法があることを願っています。 –

答えて

3

Registry.GetValue(...)メソッドを使用できると思います。最初のパラメータは、ルートを含む完全キー名です。

1

おそらく、構成の設定をタイプごとに分割する必要があります。結局のところ、HKEY_CURRENT_USERをチェックするコンピュータに通常ログインするユーザーのコンテキストでアプリケーションを実行しない限り、時間の無駄です。代わりにMachine、Classes、およびUserを指定した場合、適切なユーザーのコンテキストでそれらをチェックできます。

また、派手な機能を探しておらず、文字列Registry.GetValue/Registry.SetValueで問題ない場合は、

0

私は最終的に

さらに

Registry.GetValue(@"HKEY_LOCAL_MACHINE\SOFTWARE\MyOrganization\MyProgram", "ValueName", "default value");

:-)質問をした後、自分でそれを考え出した、ドキュメントはキーが存在しない場合には、関数がnullを返すことを言います。これは、この関数を使用してレジストリキーの有無を検出するのに便利です。 (特定のアプリケーションがインストールされているかどうかを検出するのに非常に便利です)

関連する問題