本来电脑是指定IP的,我现在想通过程序,让电脑变成自动获取IP有人知道怎么做?如果是改注册表的方法,最好能告诉需要更改哪些项?网络连接怎样重启?达到自动获取Ip地址的效果
解决方案 »
- 【调试技巧】图解如何在VC6,VS2008中设置程序条件断点
- 链表内部元素从小到大排序
- dll返回一个stl队列编译错误,把它做引用写在参数里面,也没用,大家来帮帮忙啊!
- 这个网络游戏怎么玩不了?
- [高分求助!]超市常见的扫码器编程
- 66分紧急求助.怎么在一个对话框中打开、关闭另外一个对话框啊
- win2000下的2个问题。请帮帮忙啊!
- 关于多线程创建
- 如何用RECORDSET获取memo 字段的数据?
- 如何加一个CStatic 到菜单行(不是菜单条)的右边,类似Internet Explorer右上角的那个动画控件,但MS使用的是菜单条?
- 如何对内存进行实时监控
- vs2005 C++ 连接 sql 2005的数据库
在注册表的这里:
[HKEY_LOCAL_MACHINE\SYSTEM\CURRENTCONTROLSET\SERVICES\CLASS\NETTRANS\0001]
"DRIVERDESC"="TCP/IP"
"INFSECTION"="MSTCP.NDI"
"IPADDRESS"="192.168.0.199"
"IPMASK"="255.255.255.0"
"DEVICEVXDS"="VTDI.386,VIP.386,VTCP.386,VDHCP.386,VNBT.386"
"INSTALLVNBT"="0"
"INFPATH"="NETTRANS.INF"
"PROVIDERNAME"="MICROSOFT"
"DRIVERDATE"=" 5- 5-1999"
"DEVLOADER"="*NDIS"
"DEFAULTGATEWAY"="192.168.0.1" 设为自动获取后就这样了:
[HKEY_LOCAL_MACHINE\SYSTEM\CURRENTCONTROLSET\SERVICES\CLASS\NETTRANS\0001]
"DRIVERDESC"="TCP/IP"
"INFSECTION"="MSTCP.NDI"
"IPADDRESS"="0.0.0.0"
"IPMASK"="0.0.0.0"
"DEVICEVXDS"="VTDI.386,VIP.386,VTCP.386,VDHCP.386,VNBT.386"
"INSTALLVNBT"="0"
"INFPATH"="NETTRANS.INF"
"PROVIDERNAME"="MICROSOFT"
"DRIVERDATE"=" 5- 5-1999"
"DEVLOADER"="*NDIS"
"DEFAULTGATEWAY"="192.168.0.1" 修改IP地址:
你所需要修改的注册表主键为 HKEY_LOCAL_MACHINE,所以请确定你的程序有足够权限。
查找子键 SOFTWARE\MICROSOFT\WINDOWS NT\CURRENTVERSION\NETWORKCARDS\NETCARD#,NETCARD# 通常为"1",但是如果安装了多块网卡名称就会有所不同。
得到键"SERVICENAME"的值。
通过刚才得到的"SERVICENAME"打开相应的键SYSTEM\CURRENTCONTROLSET\SERVICES\"SERVICENAME"\PARAMETERS\TCPIP。
设置键"IPADDRESS"的值以达到改变IP地址的目的,同时需要设置"SUBNETMASK"键值以改变子网掩码。
设置"DEFAULTGATEWAY"键值改变默认网关地址。
重新启动
修改主机名称:
你所需要修改的注册表主键为 HKEY_LOCAL_MACHINE
打开子键 SYSTEM\CURRENTCONTROLSET\SERVICES\TCPIP\PARAMETERS
更改键"HOSTNAME"的值
打开子键 SYSTEM\CURRENTCONTROLSET\CONTROL\COMPUTERNAME\COMPUTERNAME
更改键"COMPUTERNAME"的值
重新启动 使用IPHLPAPI里面的ADDNETWORDADDRESS和DELETENETWORDADDRESS函数.当然也可以.当然还可以使用脚本
SYSTEM("NETSH INTERFACE IP SET ADDRESS NAME="本地连接" SOURCE=STATIC ADDR=X.X.X.X MASK=255.255.255.0 GATEWAY="X.X.X.X" GWMETRIC=1 ")
SYSTEM("ETSH INTERFACE IP SET DNS NAME="本地连接" STATIC X.X.X.X REGISTER=PRIMARY")
而且xp有的系统[HKEY_LOCAL_MACHINE\SYSTEM\CURRENTCONTROLSET\SERVICES下
就没有CLASS这一项的
而且不是所有的windows操作系统都可用
我想 有没有人知道 未公开的api之类的
或者实现的比较好的方案
我查看了还几台电脑,都有上面的这个表项啊。
要是有 我何必有此疑问呢
在注册表里找到对应的名字 直接修改注册表里 这个网卡的数据
看看 能不能成功通过改EnableDHCP项达到目的。这个方法貌似
只能自动获取地址,无法自动获取DNS
DWORD AddIPAddress(
__in IPAddr Address,
__in IPMask IpMask,
__in DWORD IfIndex,
__out PULONG NTEContext,
__out PULONG NTEInstance
);//这个可以设置本机IP和子网掩码
DWORD DeleteIPAddress(
__in ULONG NTEContext
);//删除了IP列表就是自动获取了
select * from Win32_NetworkAdapterConfiguration where index=0
获得的对象有DHCPEnabled、EnableStatic、EnableDHCP等方法
http://support.microsoft.com/default.aspx?scid=kb;EN-US;q257748
11楼的方法我正在验证 不过我不知道 如果没设置本机IP和子网掩码 没有IP列表 怎么直接删除
说白了 就是DWORD DeleteIPAddress(__in ULONG NTEContext);//删除了IP列表就是自动获取了
这个参数怎么获取12楼的 给个代码片段吧 是否需要第三方库 13楼的给的那个地址我连接不上去。。
hres = pSvc->ExecQuery(
bstr_t("WQL"),
bstr_t("select * from Win32_NetworkAdapterConfiguration where index=0"),
WBEM_FLAG_FORWARD_ONLY | WBEM_FLAG_RETURN_IMMEDIATELY,
NULL,
&pEnumerator);13#的网页我可以打开,你也可以 看 netsh /?的帮助