首页 ┆ 网站地图 ┆ 在线留言 ┆ 游戏资讯 ┆ 资源下载 ┆ 端午节祝福 ┆ 迅雷在线影视
设为首页
加入收藏
联系我们
高级搜索
您当前的位置: 主页>C/C++>开发工具>VC++更改系统IP地址的方法代码
VC++更改系统IP地址的方法代码
来源: 发布时间:2008-06-01 发布人: 浏览: 人次   字体: [ ]  

2、将IP信息写入注册表

  代码如下:

//*********************************************
BOOL RegSetIP(LPCTSTR lpszAdapterName, LPCTSTR pIPAddress, LPCTSTR pNetMask, LPCTSTR pNetGate)
{
HKEY hKey;
string strKeyName = "SYSTEM\\CurrentControlSet\\Services\\Tcpip\\Parameters\\Interfaces\\";
strKeyName += lpszAdapterName;
if(RegOpenKeyEx(HKEY_LOCAL_MACHINE,
strKeyName.c_str(),
0,
KEY_WRITE,
&hKey) != ERROR_SUCCESS)
return FALSE;

char mszIPAddress[100];
char mszNetMask[100];
char mszNetGate[100];

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

int nIP, nMask, nGate;

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

*(mszIPAddress + nIP + 1) = 0x00; // REG_MULTI_SZ数据需要在后面再加个0
nIP += 2;

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

*(mszNetGate + nGate + 1) = 0x00;
nGate += 2;

RegSetValueEx(hKey, "IPAddress", 0, REG_MULTI_SZ, (unsigned char*)mszIPAddress, nIP);
RegSetValueEx(hKey, "SubnetMask", 0, REG_MULTI_SZ, (unsigned char*)mszNetMask, nMask);
RegSetValueEx(hKey, "DefaultGateway", 0, REG_MULTI_SZ, (unsigned char*)mszNetGate, nGate);

RegCloseKey(hKey);

return TRUE;
}

//******************************************

 3、调用DhcpNotifyConfigChange通知配置的改变

  未公开函数DhcpNotifyConfigChange位于 dhcpcsvc.dll中,原型如下:

//*******************************************
BOOL DhcpNotifyConfigChange(
LPWSTR lpwszServerName, // 本地机器为NULL
LPWSTR lpwszAdapterName, // 适配器名称
BOOL bNewIpAddress, // TRUE表示更改IP
DWORD dwIpIndex, // 指明第几个IP地址,如果只有该接口只有一个IP地址则为0
DWORD dwIpAddress, // IP地址
DWORD dwSubNetMask, // 子网掩码
int nDhcpAction ); // 对DHCP的操作 0:不修改, 1:启用 DHCP,2:禁用 DHCP

//**********************************************

 具体调用代码如下:

//*********************************************

BOOL NotifyIPChange(LPCTSTR lpszAdapterName, int nIndex, LPCTSTR pIPAddress, LPCTSTR pNetMask)
{
BOOL bResult = FALSE;
HINSTANCE hDhcpDll;
DHCPNOTIFYPROC pDhcpNotifyProc;
WCHAR wcAdapterName[256];

MultiByteToWideChar(CP_ACP, 0, lpszAdapterName, -1, wcAdapterName,256);

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

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

FreeLibrary(hDhcpDll);
return bResult;
}

//*********************************************

 二、修改注册表:网卡重启

  更改Windows网卡属性选项中IP地址, 通过对比前后注册表, 可以发现以下几处发生变化

//*************************************************
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services
\Tcpip\Parameters\Interfaces\{97EFDAD8-EB2D-4F40-9B07-0FCD706FCB6D}]
"IPAddress"
"SubnetMask"
"DefaultGateway"
"NameServer"

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\{97EFDAD8-EB2D-4F40-9B07-0FCD706FCB6D}\Parameters\Tcpip]
"IPAddress"
"SubnetMask"
"DefaultGateway"

[HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Services\Tcpip\Parameters\Interfaces\{97EFDAD8-EB2D-4F40-9B07-0FCD706FCB6D}]
"IPAddress"
"SubnetMask"
"DefaultGateway"
"NameServer"

[HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Services\{97EFDAD8-EB2D-4F40-9B07-0FCD706FCB6D}\Parameters\Tcpip]
"IPAddress"
"SubnetMask"
"DefaultGateway"

//****************************************************

共3页: 上一页 [1] 2 [3] 下一页
相 关 文 章   发布商链接
·vc6.0实现鼠标显示按钮功能提示文本
·VC操作Excel和运用ADO操作数据库时产...
·双击VC对话框提示cannot add new mem...
·VC获得当前系统是什么语言版本的方法
·VC含有双引号的CSV数据分割
·VC获取目录的两种方法代码
·实例讲解VC++实现对文件夹时间的修改
·VisualC++中如何保证256色以上的图标...
·vc++实现下载工具软件flashget浮动窗...
·vc++实现对广告窗口的自动关闭代码
 §最新评论:(评论内容只代表网友观点,与本站立场无关!)
网名: 验证码:  【所有评论】【↑返回顶部
评 分: 12 345
评论内容:(不能超过500字,请自觉遵守互联网相关政策法规。[按 Ctrl+Enter 可直接提交]
注意:请勿在本站发布政治话题、色情及违反法律的内容。
IT知道网 声明:刊登此文章是为了传递更多信息,文章内容仅供参考,转载请注明出处。
推 荐 文 章
·vc++实现下载工具软件flashge...
·VC获取目录的两种方法代码
·VC获得当前系统是什么语言版...
·双击VC对话框提示cannot add ...
·VC操作Excel和运用ADO操作数...
·vc6.0实现鼠标显示按钮功能提
·如何消除vc屏幕闪烁的方法?
·在CListView控件添加右键弹出
·MFC中利用CMenu类动态添加弹...
·详解如何在VC++下动态调整水...
·如何在VC++下完全动态生成水...
·C++builder调试时提示找不到b...
·vc实现定时执行任务的两种方...
·VC使用定时机制的几种方法
·VC制作使用图片做为背景的对...
热 门 文 章
·图解VC2005之创建解决方案祥...
·在VC中创建DLL文件的方法步骤...
·VC使用定时机制的几种方法
·Vc中自定义消息及其触发使用
·VC制作使用图片做为背景的对...
·vc实现定时执行任务的两种方...
·在CListView控件添加右键弹出...
·如何在VC++下完全动态生成水...
·MFC中利用CMenu类动态添加弹...
·C++builder调试时提示找不到b...
·双击VC对话框提示cannot add ...
·如何消除vc屏幕闪烁的方法?
·实例讲解vc调用winrar进行文...
·Visual C++开发工具与调试技...
·Visual C++设计超强仿QQ自动...
网站首页 - 关于本站 - 加入收藏 - 网站地图 - 友情连接 - 在线留言 - 联系我们 - 返回顶部
Copyright © 2007 IT知道网.[冀ICP备07026896号]. All Rights Reserved .