DNSサーバのアドレスが固定化自動かを識別するには?

解決


どら  2008-01-18 12:12:35  No: 67329  IP: 192.*.*.*

こんにちは、またまた投稿です。

ある特定のネットワークアダプタに対して、
   IP
   サブネット
   ゲートウェイ
   DHCPの有効/無効
   DNSサーバアドレスのアドレス/自動取得

等の情報を取得するプログラムを作成しています。
WMIから取得しようと思ったのですが、最後の「DNSサーバアドレスのアドレ
ス/自動取得」において、DNSを動的に取得する設定になっているかどうかの
判別をする方法がわからず・・・

設定する場合はWin32_NetworkAdapterConfigurationクラスのSetDNSSerVerSearchOrder
メソッドで引数を空にして実行すればできたので、DNSSerVerSearchOrder プ
ロパティをみれば、自動になっているときは値が無いのかな〜なんて思ってま
した・・・が、そんなに甘くなく(汗)

他にそれらしきプロパティやメソッドが無かったので、どうやって取得すれば
よいかわからず困っています。

別にWMIを利用する必要はないのですが、WMIから取得できるIndexなどのイン
ターフェイスを特定できる値を元に、そのインターフェイスのDNSサーバのア
ドレスが固定なのか自動取得なのかを確認する術があれば教えて頂けないでし
ょうか?

開発環境はWindows XP Pro with SP2 + VS.NET2003 Enterprise (SDK)です。

編集 削除
どら  2008-01-18 12:13:56  No: 67330  IP: 192.*.*.*

すみません、件名の変換ミスですね・・・
「固定化自動か」→「固定か自動か」ですね(汗)

編集 削除
シャノン  2008-01-18 17:17:03  No: 67331  IP: 192.*.*.*

> DNSServerSearchOrder プロパティをみれば、自動になっているときは値が無いのかな〜なんて思ってました・・・が、そんなに甘くなく(汗)

それでできそうな気もしますが、どんな値が返ってきちゃったんです?

編集 削除
どら  2008-01-18 18:34:07  No: 67332  IP: 192.*.*.*

>シャノンさん

普通に自動取得で取得されたDNS ServerのIPが列挙されるだけなんです・・・。

編集 削除
シャノン  2008-01-18 20:01:04  No: 67333  IP: 192.*.*.*

そのとき、ネットワークアダプタのプロパティにも値が入ってるんですか?
コントロールパネルの「ネットワーク接続」から確認してください。

編集 削除
どら  2008-01-19 14:58:11  No: 67334  IP: 192.*.*.*

>シャノンさん
ネットワークアダプタのプロパティは何も表示されていません。

DHCPを有効にしたときのWin32_NetworkAdapterConfiguration::IPAddressみたい
に、アダプタのプロパティは自動のまま何も表示されませんが、WMIから情報を取
るとしっかりと値があります。

コマンドプロンプトの「ipconfig /all」と同じように全自動にしても値が返って
くる感じです。

編集 削除
シャノン  2008-01-21 01:04:59  No: 67335  IP: 192.*.*.*

あ、ほんとだ。
会社でやったら再現しなかったけど、家でやったら再現しました。

WMIには他にいい方法がなさそうですね。
レジストリを直接見るか。

HKEY_LOCAL_MACHINE \ SYSTEM \ CurrentControlSet \ Services \ Tcpip \ Parameters \ Interfaces \ { Win32_NetworkAdapterConfiguration.SettingID の値 }

にある、NameServer というのが DNS かな。
こっちは自動取得の場合は空になってますね。

編集 削除
どら  2008-01-22 17:00:42  No: 67336  IP: 192.*.*.*

>シャノンさん

ありがとうございました、できました!!
ソース書こうと思ったのですが、結構長くなっちゃったのでやめておきます。
(WMIでSettingIDとるところから始めているので250行くらいもあり・・・)

最近のマニアックな投稿に毎度お付き合いいただいてありがとうございます。

編集 削除