WindowsXpEmbeddedにおいて、IPアドレスの変更をアプリケーション上から行いたいのですが、上手くできません。
現状としては、
①RegOpenKeyExを行う。
引数には以下を用いる。
HKLMのSYSTEM\\CurrentControlset\\Services\\{…}\\Parameters\\Tcpip
②RegSetValueExにてIPアドレスを指定。
③RegCloseKeyを行う。
④電源再投入
上記4点を行った後、ターゲットのレジストリエディタを見ると、②のIPアドレスがしっかり入っていますが、
windows上のマイ ネットワークのプロパティを見ると、上記4点の操作前に、手入力したIPアドレスのままなのです。
●操作が上記4点では不足しているのでしょうか?
●レジストリエディタの値がWindowsで反映されるのはいつなのでしょうか?
上記●2点をお教え願えますでしょうか?
以上、よろしくお願い致します。
ひとつ確認です。
プログラムからではなく、直接レジストリでその項目を変更して、ネットワークの設定は変わりますか?
もし変わらないとなると、変更する場所が違う or 足りないのかもしれません・・・
IPアドレスを変更したいのであればIP HelperのAPI AddIPAddress関数を使って変更することもできたような気がしますが、これで解決にならないようでしたらごめんなさい・・・。
追記です。
WMIでもIPアドレスは変更できたと思います。
レジストリで変更しなければならない理由があったりしたらごめんなさい。
(先に書いたAPIも含めて、WindowsXpEmbeddedで使えるかどうかはわからないです)。
そのレジストリを変更してIPアドレスを変えるなんて情報は何処から得たのでしょうか
どらさんが書かれている方法が通常採る方法です
それと、意味のわかる件名をつけましょう
レジストリの指定箇所が間違ってたので、修正したらIPの変更ができるようになりました。どらさん、いろいろアドバイス有り難うございました。(ちなみにAddIPAddressの方法も試したのですが、なぜかIP変わりませんでした。)
皆さんの意見からすると、レジストリでIPを変更するのは邪道のような気がしますが、ひとまず、変更ができるようになったので解決とさせて下さい。
回答下さった皆さん、有り難う御座いました。
これは個人的な意見ですが・・・
レジストリで設定を変更する場合
・どこどこを変更すればよいかがわかりにくいことが多く、変更ミスをしや
すい
・操作を誤ったときが致命的になることが多い(レジストリの場合は、内容
がおかしくでも、対象の値が与えられた形式[DWORD、バイナリ、文字列
など]があっていれば変更できてしまい、エラー検出が難しいので、この
ようなことに陥りやすいと勝手に思い込んでます)
などの理由から、APIやWMIで変更できるものは、そちらで変更した方が「安
全」かつ「確実」だと思っています。
基本的にはAPIやWMIで設定を変更するようにし、どうしようも無いものの場
合のみ、レジストリを変更、という形にされた方がよいかもしれません。