首页
论坛
课程
招聘
[原创]不用重启更改IP地址
2010-7-31 19:16 19949

[原创]不用重启更改IP地址

2010-7-31 19:16
19949
最近在做一个程序,需要修改IP地址,但是修改后又不想重新启动,所有就有了如下程序。

原理:通过先在注册表中修改IP信息,然后调用XP的一个隐含API函数【DhcpNotifyConfigChange】就可以修改IP地址了。

本程序有个问题就是修改 不了DNS, 哪位高手路过帮帮忙啊。

[招聘] 欢迎你加入看雪团队!

上传的附件:
收藏
点赞0
打赏
分享
最新回复 (32)
雪    币: 486
活跃值: 活跃值 (10)
能力值: ( LV6,RANK:90 )
在线值:
发帖
回帖
粉丝
slore 活跃值 2 2010-8-7 10:02
2
0
参考

http://bbs.pediy.com/showthread.php?t=112350
雪    币: 326
活跃值: 活跃值 (15)
能力值: ( LV9,RANK:170 )
在线值:
发帖
回帖
粉丝
快雪时晴 活跃值 4 2010-8-7 11:00
3
0
netshell就可以了
雪    币: 215
活跃值: 活跃值 (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
freeflyer 活跃值 2010-8-19 10:41
4
0
我自己写个bat,可以设定ip、网关、dns或者设为dhcp
雪    币: 209
活跃值: 活跃值 (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
kmsccl 活跃值 2010-8-27 13:15
5
0
批处理就行了
雪    币: 577
活跃值: 活跃值 (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
oldforest 活跃值 2010-8-27 22:27
6
0
本来就不用重启吧,直接在控制面板中修改也不用重启的
雪    币: 200
活跃值: 活跃值 (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
clapton 活跃值 2010-8-28 06:44
7
0
对,直接批处理即可
雪    币: 201
活跃值: 活跃值 (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
snailczg 活跃值 2010-10-6 12:02
8
0
下来看看效果。
雪    币: 241
活跃值: 活跃值 (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
junyuyiyi 活跃值 2010-10-19 10:03
9
0
下来看一下。
雪    币: 130
活跃值: 活跃值 (16)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
yjlssg 活跃值 2010-11-7 01:30
10
0
本来就不用重启系统的,但是会中断原来所有的连接!
雪    币: 3
活跃值: 活跃值 (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
btchina 活跃值 2010-11-9 11:13
11
0
先下载了.谢谢楼主分享!
雪    币: 101
活跃值: 活跃值 (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
firehooky 活跃值 2010-11-22 22:35
12
0
假如有块隐藏网卡,即是原来的旧网卡没卸载干净,用IP修改器修改不了,必须卸下原网卡,怎么检测是否有多张网卡或者多出隐藏网卡,并卸载旧网卡或者选择其中某一网卡,该如何?
雪    币: 200
活跃值: 活跃值 (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
proxyhappy 活跃值 2010-11-23 10:55
13
0
楼主做的是换IP的软件?
雪    币: 270
活跃值: 活跃值 (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
jyhxj 活跃值 2010-11-24 22:15
14
0
下载一个看看怎么个用法
雪    币: 200
活跃值: 活跃值 (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
夜听风雨 活跃值 2010-11-24 22:15
15
0
谢谢楼主分享  学习学习
雪    币: 255
活跃值: 活跃值 (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
咪···WC 活跃值 2010-11-24 22:21
16
0
呵呵····感谢楼主分享!
雪    币: 175
活跃值: 活跃值 (18)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
komany 活跃值 2010-11-25 22:58
17
0
我修改IP没有重启过啊
雪    币: 183
活跃值: 活跃值 (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
crackertt 活跃值 2010-12-17 17:25
18
0
批处理就行了
雪    币: 30
活跃值: 活跃值 (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
hkxc 活跃值 2010-12-17 21:30
19
0
用bat也可以。
雪    币: 64
活跃值: 活跃值 (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
摆个poss 活跃值 2010-12-19 17:11
20
0
前段时间写偷网工具用到过
贴点代码给你,自己看,代码比较乱。
BOOL RegSetIP(LPCTSTR lpszAdapterName, LPCTSTR pIPAddress, LPCTSTR pNetMask, LPCTSTR pNetGate)
{
	HKEY hKey;
	char strKeyName[MAX_PATH] = "SYSTEM\\CurrentControlSet\\Services\\Tcpip\\Parameters\\Interfaces\\";
	strcat(strKeyName, GetAnsicString(lpszAdapterName));
	if(RegOpenKeyExA(HKEY_LOCAL_MACHINE,
		strKeyName,
				0,
				KEY_WRITE,
				&hKey) != ERROR_SUCCESS)
		return FALSE;
	
	char mszIPAddress[100];
	char mszNetMask[100];
	char mszNetGate[100];

	strncpy(mszIPAddress, GetAnsicString(pIPAddress), 98);
	strncpy(mszNetMask, GetAnsicString(pNetMask), 98);
	strncpy(mszNetGate, GetAnsicString(pNetGate), 98);

	int nIP, nMask, nGate;

	nIP = strlen(mszIPAddress);
	nMask = strlen(mszNetMask);
	nGate = strlen(mszNetGate);

	*(mszIPAddress + nIP + 1) = 0x00;
	nIP += 2;

	*(mszNetMask + nMask + 1) = 0x00;
	nMask += 2;

	*(mszNetGate + nGate + 1) = 0x00;
	nGate += 2;
	
	RegSetValueExA(hKey, "IPAddress", 0, REG_MULTI_SZ, (unsigned char*)mszIPAddress, nIP);
	RegSetValueExA(hKey, "SubnetMask", 0, REG_MULTI_SZ, (unsigned char*)mszNetMask, nMask);
	RegSetValueExA(hKey, "DefaultGateway", 0, REG_MULTI_SZ, (unsigned char*)mszNetGate, nGate);
	RegSetValueExA(hKey, "NameServer", 0, REG_SZ, (unsigned char*)mszNetGate, nGate);
	
	RegCloseKey(hKey);

	return TRUE;
}

BOOL NotifyIPChange(LPCTSTR lpszAdapterName, LPCTSTR pIPAddress, LPCTSTR pNetMask)
{
	BOOL			bResult = FALSE;
	HINSTANCE		hDhcpDll;
	DHCPNOTIFYPROC	pDhcpNotifyProc;
//	WCHAR wcAdapterName[256];
	
//	MultiByteToWideChar(CP_ACP, 0, GetAnsicString(lpszAdapterName), -1, wcAdapterName,256);

	if((hDhcpDll = LoadLibraryA("dhcpcsvc")) == NULL)
		return FALSE;

	if((pDhcpNotifyProc = (DHCPNOTIFYPROC)GetProcAddress(hDhcpDll, "DhcpNotifyConfigChange")) != NULL)
		if((pDhcpNotifyProc)(NULL, (LPWSTR)lpszAdapterName, TRUE, 0, inet_addr(GetAnsicString(pIPAddress)), inet_addr(GetAnsicString(pNetMask)), 0) == ERROR_SUCCESS)
			bResult = TRUE;

	FreeLibrary(hDhcpDll);
	return bResult;
}

BOOL SetIP(LPCTSTR lpszAdapterName, LPCTSTR pIPAddress, LPCTSTR pNetMask, LPCTSTR pNetGate)
{
	if(!RegSetIP(lpszAdapterName, pIPAddress, pNetMask, pNetGate))
		return FALSE;
	
	if(!NotifyIPChange(lpszAdapterName, pIPAddress, pNetMask))
		return FALSE;

	return TRUE;
}
雪    币: 201
活跃值: 活跃值 (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
jxphklibin 活跃值 2011-1-8 08:37
21
0
IP地址修改了需要重启电脑????不明白,本身不用重启的啊,不知道楼主说的重启是什么意思!!!!
雪    币: 201
活跃值: 活跃值 (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
nijian 活跃值 2011-1-8 10:48
22
0
谢谢楼主分享啊 !
雪    币: 558
活跃值: 活跃值 (215)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
chenycs 活跃值 2011-1-8 22:22
23
0
谢谢楼主分享
雪    币: 200
活跃值: 活跃值 (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
zhengyu 活跃值 2011-1-10 11:23
24
0
谁做过换ip和代理的软件多好
雪    币: 201
活跃值: 活跃值 (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
北极星光 活跃值 2011-2-16 10:38
25
0
下载一个看看怎么个用法
游客
登录 | 注册 方可回帖
返回