.NET TIPS リモート・コンピュータのレジストリを参照/操作するには?[C#、VB]デジタルアドバンテージ 一色 政彦2007/09/20 |
![]() |
「TIPS:レジストリの値を取得するには?」や「TIPS:レジストリの値を設定するには?」では、利用中のローカル・コンピュータ(いわゆる「マイ コンピュータ」)のレジストリを取り扱う方法を紹介したが、Windowsではリモート・コンピュータ(=別のコンピュータ)のレジストリ(「ネットワーク レジストリ」と呼ばれる)も参照・操作することができる。
次の画面はレジストリ・エディタを使ってリモート・コンピュータのレジストリを参照/操作している例だ。
![]() |
| レジストリ・エディタによるリモート・コンピュータのレジストリの参照/操作 |
| この例では「Server01」というリモート・コンピュータのレジストリを参照している。なお、レジストリ・エディタは起動するには、[スタート]メニューの[ファイル名を指定して実行]をクリックして[ファイル名を指定して実行]ダイアログを起動し、そのダイアログのテキストボックスに「regedit」を入力して実行する。 |
本稿では、このようなリモート・コンピュータのレジストリを、.NET Frameworkのクラス・ライブラリを使って参照/操作する方法を紹介する。
ネットワーク・レジストリを参照/操作する方法
ローカル・コンピュータであろうと、リモート・コンピュータであろうと、基本的なレジストリの参照/操作方法はほぼ変わらない。違うのは基本キーだけである。基本キーとは、レジストリの参照・操作を行う基点となるRegistryKeyオブジェクト(=Microsoft.Win32名前空間のRegistryKeyクラスのインスタンス)のことだ。
基本キーは、ローカル・コンピュータの場合、Registryクラス(Microsoft.Win32名前空間)の静的フィールドであるLocalMachineフィールドやCurrentUserフィールドを利用して取得するが、リモート・コンピュータの場合、Registryクラスの静的メソッドであるOpenRemoteBaseKeyメソッドを使う。
OpenRemoteBaseKeyメソッドは、第1パラメータにRegistryHiveオブジェクト(=Microsoft.Win32名前空間のRegistryHive列挙体のメンバ)を、第2パラメータにリモート・コンピュータの名前(例えば「Server01」などの文字列)を受け取り、戻り値として基本RegistryKeyオブジェクト(=基本キー)を返す。RegistryHive列挙体のメンバは次の表のとおりだ。
| RegistryHive列挙体のメンバ | 取得される基本キー |
| RegistryHive.ClassesRoot | HKEY_CLASSES_ROOT |
| RegistryHive.CurrentConfig | HKEY_CURRENT_CONFIG |
| RegistryHive.CurrentUser | HKEY_CURRENT_USER |
| RegistryHive.DynData | HKEY_DYN_DATA |
| RegistryHive.LocalMachine | HKEY_LOCAL_MACHINE |
| RegistryHive.PerformanceData | HKEY_PERFORMANCE_DATA |
| RegistryHive.Users | HKEY_USERS |
| RegistryHive列挙体のメンバと、取得される基本キー | |
| いずれの基本キー(=基本RegistryKeyオブジェクト)も「リモート・コンピュータのレジストリ」であることに注意。 | |
以上で基本キーが取得できたら、あとは前述のとおり、ローカル・コンピュータの場合と同じ方法で、レジストリの参照/操作を行えばよい。
それでは、例えば「Server01」という名前のリモート・コンピュータの「HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths」配下のキーを列挙する場合を考えてみよう(関連:「TIPS:レジストリのキーを列挙するには?」)。
まず、OpenRemoteBaseKeyメソッドの第1パラメータに「RegistryHive.LocalMachine」を、第2パラメータに「"Server01"」を指定して基本RegistryKeyオブジェクトを取得する。そして、このオブジェクトが持つOpenSubKeyメソッドを、開きたいレジストリのキーのパス名「SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths」をパラメータに指定して呼び出す(※パス名は「HKEY_LOCAL_MACHINE」などのルート名を省略する必要がある)。これにより、開きたいキーに対応したRegistryKeyオブジェクト(=親キー)が取得できるので、あとはこのオブジェクトが持つGetSubKeyNamesメソッドを呼び出せば、その親キーの配下にあるすべてのサブ・キー(=子キー)の名前が、文字列配列型の戻り値として取得できる。
以上の処理を実装したコード例を次に示す。
|
||
| リモート・コンピュータのレジストリを参照するコンソール・アプリケーションのサンプル・プログラム(上:C#、下:VB) |
開いたキーを閉じるため、RegistryKeyオブジェクトのCloseメソッドを呼び出すことを忘れないようにしてほしい。![]()
| カテゴリ:クラス・ライブラリ 処理対象:レジストリ 使用ライブラリ:Registryクラス(Microsoft.Win32名前空間) 使用ライブラリ:RegistryKeyクラス(Microsoft.Win32名前空間) 関連TIPS:レジストリの値を取得するには? 関連TIPS:レジストリの値を設定するには? 関連TIPS:レジストリのキーを列挙するには? |
|
||||||||||||||||||||||||||||
| 「.NET TIPS」 |
TechTargetジャパン
- 新人プログラマーのためのInsider.NETの歩き方 2012 (2012/5/22)
晴れて.NETプログラマーとなる新人が効率的に開発技術を習得するには? 大量にある記事群の中から新人が読むべきお勧めを厳選して紹介 - jQuery MobileでJavaScriptプログラミング (2012/5/17)
jQuery Mobileは手軽なだけでなく、JavaScriptのAPIも充実しており、独自機能の実装もできる。今回は「グローバル設定」と「イベント」を解説 - Windows上で開発するための開発環境構築入門 (2012/5/16)
Windowsを使ってチームで開発している? なのにサーバOSを設定・運用した経験がない? そうなら、今すぐ学ぼう - 「コントラクト」でアプリのサンドボックスを乗り越える! (2012/5/11)
Metroスタイル・アプリはサンドボックスの中で動作する。それを乗り越えてほかのアプリと連携する仕組み「コントラクト」を解説
|
|
キャリアアップ
スポンサーからのお知らせ
- - PR -
イベントカレンダー
- - PR -



