- PR -

DHCP と固定 IP のプログラムからの切り替え

1
投稿者投稿内容
わちゃ
大ベテラン
会議室デビュー日: 2005/12/05
投稿数: 162
お住まい・勤務地: 東京
投稿日時: 2006-12-01 12:58
いつもお世話になっております。

現在、プログラムでパソコンの IP アドレスを DHCP クライアントにするか、
固定で割り当てるかを切り替えたいと思っております。

探し方が悪いのか、API のマニュアルや、pinvoke で、netapi32 の辺りなどを
調べてみたのですが、なかなかその方法が見つかっておりません。

もし、ご存知の方等いらっしゃったら、教えていただければと思います。

よろしくお願いします。


ryuuji
ベテラン
会議室デビュー日: 2003/07/10
投稿数: 53
お住まい・勤務地: 東京都
投稿日時: 2006-12-01 13:35
そのプログラムからnetshを叩く、じゃだめでしょうか。

コード:

DHCP→固定
netsh interface ip set address name="ローカル エリア接続" static addr=XXX.XXX.XXX.XXX mask=YYY.YYY.YYY.YYY gateway=ZZZ.ZZZ.ZZZ.ZZZ gwmetric=1
netsh interface ip set dns name="ローカル エリア接続" static xxx.xxx.xxx.xxx

固定→DHCP
netsh interface ip set address name="ローカル エリア接続" dhcp
netsh interface ip set dns name="ローカル エリア接続" dhcp



[ メッセージ編集済み 編集者: ryuuji 編集日時 2006-12-01 13:38 ]
わちゃ
大ベテラン
会議室デビュー日: 2005/12/05
投稿数: 162
お住まい・勤務地: 東京
投稿日時: 2006-12-01 15:25
ryuuji 殿

ありがとうございます!!!

なんか、一生懸命 API であれこれ試していた自分が情けなくなってきました。

頂きました方法で、バッチリです。
渋木宏明(ひどり)
ぬし
会議室デビュー日: 2004/01/14
投稿数: 1155
お住まい・勤務地: 東京
投稿日時: 2006-12-01 23:41
引用:

現在、プログラムでパソコンの IP アドレスを DHCP クライアントにするか、
固定で割り当てるかを切り替えたいと思っております。



WMI の Win32_NetworkAdapterConfiguration クラスで出来そうです。

_________________
// 渋木宏明 (Hiroaki SHIBUKI)
// http://hidori.jp/
// Microsoft MVP for Visual C#
//
// @IT会議室 RSS 配信中: http://hidori.jp/rss/atmarkIT/
Jitta
ぬし
会議室デビュー日: 2002/07/05
投稿数: 6267
お住まい・勤務地: 兵庫県・海手
投稿日時: 2006-12-02 18:17
理由によっては、プログラム組むまでもない、とか。
DHCP 設定にしたら、DHCP からとれなかったときの設定も、出来ますよね。
_________________
わちゃ
大ベテラン
会議室デビュー日: 2005/12/05
投稿数: 162
お住まい・勤務地: 東京
投稿日時: 2006-12-02 22:19
ひどり殿、Jitta 殿

どうも、ありがとうございます。

とりあえず、cmd のウィンドウを出したくなかったので、
cmd の標準入出力をハンドリングするクラスを作ろうと
思っていたとこでした。

WMI で、できればそっちの方が簡単そうですね。
ちょっと調べてみます。

DHCP からとれなかった時の設定も楽かもしれませんね。
ただ、起動してすぐサーバにつなぐ必要があるため、
ちょっと怖いので今回は見送りたいと思います。

そういえば、昔 NT4.0 で画面に急に

「リースが切れました」

ってメッセージが画面に出て、お客さんから苦情の連絡を頂いた事がありました。




こちらも、ワケが分からずすぐに行って見てみたら DHCP のリースが
切れたみたいで。

DHCP のリースが切れたぐらいで、ダイアログなんか出なくていいんですけどね。

そういうのもあって、DHCP じゃないとこで、DHCP の設定をするのにも
ちょっと抵抗は感じています。

いずれにしても、ご助言ありがとうございました。
Jitta
ぬし
会議室デビュー日: 2002/07/05
投稿数: 6267
お住まい・勤務地: 兵庫県・海手
投稿日時: 2006-12-03 21:21
ちょっとごめんなさい、意味がわかりませんでした。

引用:

わちゃさんの書き込み (2006-12-02 22:19) より:

とりあえず、cmd のウィンドウを出したくなかったので、
cmd の標準入出力をハンドリングするクラスを作ろうと
思っていたとこでした。


 それは、ProcessStartInfo クラスの設定によって、どうにでも出来ますよね?
引用:

CreateNoWindow
プロセスを新しいウィンドウで起動するかどうかを示す値を取得または設定します。



引用:

DHCP からとれなかった時の設定も楽かもしれませんね。
ただ、起動してすぐサーバにつなぐ必要があるため、
ちょっと怖いので今回は見送りたいと思います。


だから、「理由によっては」としました。
 なぜ、プログラムから IP アドレスや DHCP の設定を変更する必要があるのか、その理由は書かれていないですよね?
 私は、IP アドレスは、そう簡単に変えるものではないと思っています。対象の OS も書かれていませんが、XP であれば、つなぐネットワークによって IP アドレスなどを変更することが出来ます。
 また、接続のプロパティで、[インターネット プロトコル(TCP/IP)のプロパティ]を表示して、[IP アドレスを自動的に取得する]ラジオボタンをオンにすると、[代替の構成]タブが表示され、ここで[ユーザー構成]ラジオボタンをオンにすると、IP アドレスなどを設定することが出来ます。
 この設定は、プログラムが起動するよりも早く参照されますが、ここで「起動してすぐ」とは、いつのことを指しているのでしょうか。
_________________
1

スキルアップ/キャリアアップ(JOB@IT)