VBでIPアドレスの取得とかは出来るのですが、
管理者権限ならIPアドレスを設定できるようなものってありませんか?
もしご存知なら教えて頂きたいです。
Winsockコントロールを使う方法がいちばん簡単です。
Text1.Text = Winsock1.LocalIP
これだけです。
よ読み間違った!
IPをVBで設定、わかりません、申し訳ない。(^^;
思いつきで言うと、DOSのarpコマンドをバッチファイルに仕込んで
そのバッチファイルをVBからShellでキックしたらどうでしょうか。
お使いのOSがWMIをサポートしていれば、以下のURLが役に立つと思います。
http://www.kawabata.ksi.ne.jp/ips.asp
Shell関数を使って、『netshコマンド』を発行してみるとか。
http://www.monyo.com/technical/windows/26.html
http://www.atmarkit.co.jp/fwin2k/win2ktips/126sw_netconf/126sw_netconf.html
前のレスの時に一応出来てはいたのですが、なんとなく自信が無くて。(^^;
要するにレジストリーを書き換えると言うことですが、リブートは必要ですね。
ネットワークカードのサービス名を読み取りそれをキーにIPのレジストリーを
書き換えます。
'REG_MULTI_SZ'これが結構いやらしいのですが、IPの場合はこれでいけるようです。
レジストリーを書き換える時は慎重に、自己責任でどーぞ!!
一応Win2kで確認済み、98の場合は SubKeyの’Windows NT’->'Windows'でいけると
思いますが未確認。
質問者はとっくに見てないと思いますがまあ一応。
Option Explicit
Private Const KEY_QUERY_VALUE = &H1
Private Const KEY_SET_VALUE = &H2
Private Const KEY_CREATE_SUB_KEY = &H4
Private Const KEY_ENUMERATE_SUB_KEYS = &H8
Private Const KEY_NOTIFY = &H10
Private Const KEY_CREATE_LINK = &H20
Private Const KEY_ALL_ACCESS = KEY_QUERY_VALUE Or KEY_SET_VALUE Or _
KEY_CREATE_SUB_KEY Or KEY_ENUMERATE_SUB_KEYS Or _
KEY_NOTIFY Or KEY_CREATE_LINK
Private Const HKEY_LOCAL_MACHINE = &H80000002
Private Const REG_SZ = 1
Private Const REG_MULTI_SZ = 7
Private Declare Function RegOpenKeyEx Lib _
"ADVAPI32" Alias "RegOpenKeyExA" _
(ByVal hKey&, ByVal lpSubKey$, ByVal ulOptions&, _
ByVal samDesired&, phkhKeyHandle&) As Long
Private Declare Function RegQueryValueExstr Lib _
"ADVAPI32" Alias "RegQueryValueExA" _
(ByVal hKey&, ByVal lpValueName$, ByVal lpReserved&, _
ByVal lpType&, ByVal lpData$, lpcbData&) As Long
Private Declare Function RegCloseKey Lib "ADVAPI32" _
(ByVal hKey As Long) As Long
Private Declare Function RegSetValueEx Lib _
"advapi32.dll" Alias "RegSetValueExA" _
(ByVal hKey As Long, ByVal lpValueName As String, _
ByVal Reserved As Long, ByVal dwType As Long, _
lpData As Any, ByVal cbData As Long) As Long
Private Sub Command1_Click()
Dim ServiceName As String
Dim length As Long
Dim Rootkey As Long
Dim hKeyHandle As Long
Dim SubKey As String
Dim Ret As Long
Dim ip As String
Rootkey = HKEY_LOCAL_MACHINE
'ネットワークカード1のサービス名の取得とりあえず一枚目のみ
'2枚目は\2となる
SubKey = "SOFTWARE\Microsoft\Windows NT\CurrentVersion\NetworkCards\1"
'マシンがNT系で無い場合は下を使う
'SubKey= "SOFTWARE\Microsoft\Windows\CurrentVersion\NetworkCards\1"
Ret = RegOpenKeyEx(Rootkey, SubKey, 0, 1, hKeyHandle)
ServiceName = String(250, Chr(0))
length = Len(ServiceName)
Ret = RegQueryValueExstr(hKeyHandle, "ServiceName", 0, 0, ServiceName, length)
Call RegCloseKey(hKeyHandle)
ServiceName = Left(ServiceName, length - 1)
'IPの設定
SubKey = "SYSTEM\CurrentControlSet\Services\" & ServiceName _
& "\Parameters\Tcpip"
Ret = RegOpenKeyEx(Rootkey, SubKey, 0, KEY_ALL_ACCESS, hKeyHandle)
ip = Trim(Text1.Text) + Chr(0)
Ret = RegSetValueEx(hKeyHandle, "IPAddress", 0, _
REG_MULTI_SZ, ByVal ip, Len(ip) + 1)
Call RegCloseKey(hKeyHandle)
End Sub