首页
社区
课程
招聘
[原创]不用重启更改IP地址
发表于: 2010-7-31 19:16 21971

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

2010-7-31 19:16
21971

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

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

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


[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

上传的附件:
收藏
免费 7
支持
分享
最新回复 (32)
雪    币: 500
活跃值: (11)
能力值: ( LV6,RANK:90 )
在线值:
发帖
回帖
粉丝
2
参考

http://bbs.pediy.com/showthread.php?t=112350
2010-8-7 10:02
0
雪    币: 370
活跃值: (15)
能力值: ( LV9,RANK:170 )
在线值:
发帖
回帖
粉丝
3
netshell就可以了
2010-8-7 11:00
0
雪    币: 215
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
我自己写个bat,可以设定ip、网关、dns或者设为dhcp
2010-8-19 10:41
0
雪    币: 209
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
批处理就行了
2010-8-27 13:15
0
雪    币: 577
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
本来就不用重启吧,直接在控制面板中修改也不用重启的
2010-8-27 22:27
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
对,直接批处理即可
2010-8-28 06:44
0
雪    币: 201
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
8
下来看看效果。
2010-10-6 12:02
0
雪    币: 241
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
9
下来看一下。
2010-10-19 10:03
0
雪    币: 829
活跃值: (2076)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
10
本来就不用重启系统的,但是会中断原来所有的连接!
2010-11-7 01:30
0
雪    币: 3
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
11
先下载了.谢谢楼主分享!
2010-11-9 11:13
0
雪    币: 101
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
12
假如有块隐藏网卡,即是原来的旧网卡没卸载干净,用IP修改器修改不了,必须卸下原网卡,怎么检测是否有多张网卡或者多出隐藏网卡,并卸载旧网卡或者选择其中某一网卡,该如何?
2010-11-22 22:35
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
13
楼主做的是换IP的软件?
2010-11-23 10:55
0
雪    币: 270
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
14
下载一个看看怎么个用法
2010-11-24 22:15
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
15
谢谢楼主分享  学习学习
2010-11-24 22:15
0
雪    币: 255
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
16
呵呵····感谢楼主分享!
2010-11-24 22:21
0
雪    币: 182
活跃值: (81)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
17
我修改IP没有重启过啊
2010-11-25 22:58
0
雪    币: 183
活跃值: (31)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
18
批处理就行了
2010-12-17 17:25
0
雪    币: 30
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
19
用bat也可以。
2010-12-17 21:30
0
雪    币: 64
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
20
前段时间写偷网工具用到过
贴点代码给你,自己看,代码比较乱。
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;
}
2010-12-19 17:11
0
雪    币: 201
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
21
IP地址修改了需要重启电脑????不明白,本身不用重启的啊,不知道楼主说的重启是什么意思!!!!
2011-1-8 08:37
0
雪    币: 201
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
22
谢谢楼主分享啊 !
2011-1-8 10:48
0
雪    币: 3837
活跃值: (3891)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
23
谢谢楼主分享
2011-1-8 22:22
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
24
谁做过换ip和代理的软件多好
2011-1-10 11:23
0
雪    币: 201
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
25
下载一个看看怎么个用法
2011-2-16 10:38
0
游客
登录 | 注册 方可回帖
返回
//