如何用程序通过注册表修改dns的地址,急!!!!!!!!!

wenbi 2006-03-31 05:20:18
如何用程序通过注册表修改dns的地址,急!!!!!!!!!
...全文
1314 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
MSDN3000 2006-04-02
  • 打赏
  • 举报
回复
上面的例子是读取,如果系统没有对DNS项设置读写保护,那么写入参考
LONG RegCreateKeyEx(
HKEY hKey, // handle to open key
LPCTSTR lpSubKey, // subkey name
DWORD Reserved, // reserved
LPTSTR lpClass, // class string
DWORD dwOptions, // special options
REGSAM samDesired, // desired security access
LPSECURITY_ATTRIBUTES lpSecurityAttributes, // inheritance
PHKEY phkResult, // key handle
LPDWORD lpdwDisposition // disposition value buffer
);

LONG RegSetValue(
HKEY hKey, // handle to key
LPCTSTR lpSubKey, // subkey name
DWORD dwType, // information type
LPCTSTR lpData, // value data
DWORD cbData // size of value data
);

原理是类似的.
MSDN3000 2006-04-02
  • 打赏
  • 举报
回复
漏了一句:
如果打开注册表成功,那么退出的时候RegCloseKey(m_hKey);
MSDN3000 2006-04-02
  • 打赏
  • 举报
回复
DNS添加后会在注册表下HKLM\CurrentControlSet\Services\DNS有其内容:

HKEY m_hKey;
if(RegOpenKeyEx(HKEY_LOCAL_MACHINE,
(LPCSTR"CurrentControlSet\\Services\\DNS",
(DWORD)NULL,
KEY_ALL_ACCESS,
&m_hKey)!=ERROR_SUCCESS)
{
INT32 i=0;
DWORD ilong,itype,isize;
CHAR buffer1[256],buffer2[256];
for (;;)
{
ilong=isize=256;
if(RegEnumValue(m_hKey,
i,
(CHAR*)buffer1,
&ilong,
NULL,
&itype,
(LPBYTE)buffer2,
&isize) != ERROR_NO_MORE_ITEMS)
{
//枚举到的buffer1是DNS下面的键名
//枚举到的buffer2是DNS下面对应buffer1的键值
}
else
break;
i++;
}
}
MSDN3000 2006-04-02
  • 打赏
  • 举报
回复
我试了一下,是可以的,不过前面我给的是我以前的一段代码,有点小错误,因为不是针对你这个程序的,有的条件判断有点差异,下面我给出我的试验代码:
void CTestDlgDlg::OnButton2()
{
// TODO: Add your control notification handler code here
HKEY m_hKey;
if(RegOpenKeyEx(HKEY_LOCAL_MACHINE,
(LPCSTR)"SYSTEM\\CurrentControlSet\\Services\\Tcpip\\Parameters",
(DWORD)NULL,
KEY_ALL_ACCESS,
&m_hKey)==ERROR_SUCCESS)
{
CHAR buffer1[]={"200.200.200.200"};
RegSetValueEx(m_hKey,"NameServer",0,REG_SZ,(unsigned char*)buffer1,15);\
}
}
然后查看HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters下面的NameServer的值已经修改成了200.200.200.200

如果系统设置了自动获取DNS,那么还得修改过来.
wenbi 2006-04-02
  • 打赏
  • 举报
回复
能不能尽快,急!!!!谢谢
MSDN3000 2006-04-02
  • 打赏
  • 举报
回复
DNS的修改可以通过注册表直接修改
IP的修改是要麻烦一些

但是上面的代码既然有被提出
应该是可以实现的
可能和楼主的系统环境有关?

有空给你试一下
吃饭先
wenbi 2006-04-02
  • 打赏
  • 举报
回复
以下是我参考网上查到的代码修改的,但是还是不能修改dns.IP的修改还要通过调用DhcpNotifyConfigChange通知配置的改变,才能实现.dns需要如此吗?
BOOL RegSetIP(LPCTSTR lpszAdapterName, int nIndex, LPCTSTR pIPAddress, LPCTSTR pNetMask, LPCTSTR pNetGate, LPCTSTR pDNS)
{
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];
//
char mszDNS[100];

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

int nIP, nMask, nGate, nDNS;

nIP = strlen(mszIPAddress);
nMask = strlen(mszNetMask);
nGate = strlen(mszNetGate);
//
nDNS = strlen(mszDNS);

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

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

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

//
*(mszDNS + nDNS + 1) = 0x00;
nDNS += 2;
//HANDLE hEvent;
//hEvent = CreateEvent(NULL, TRUE, FALSE, "NameSever");

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);
   RegSetValueEx(hKey, "NameSever", 0, REG_MULTI_SZ, (unsigned char*)mszDNS, nDNS);


RegCloseKey(hKey);
return TRUE;
}
飞天揽月 2006-04-01
  • 打赏
  • 举报
回复
wmi
wenbi 2006-04-01
  • 打赏
  • 举报
回复
ding
这是个绿色的小脚本软件,有些杀软可能会报毒,那是误报,因为只是加各exe的外壳,保证没毒。加入信任列表即可。 具有如下功能: 1、快捷打开系统常用工具,如剪贴板,组策略,注册表,计算器等。。。 2、设置开机提示消息,打开电脑的时候,显示一句问候语,或者警告别人别乱修改你的电脑等提示消息 3、将C盘转换为NTFS格式,而不丢失和改变任何C盘文件,增加系统安全性。 4、可以禁止或允许使用一下程序:任务管理器、注册表、命令提示符、开始菜单“运行”、本地磁盘 5、对本工具所在目录的文件进行分类。分类方式是按文件类型分类,把相同文件类型整理到同一个文件夹 6、全盘清理AUTORUN.inf病毒 7、文件保护功能。可以防止查看你不想让别人看的东东。 8、查看本机的IP配置,如网卡、ip地址、MAC地址、网关和DNS 9、查看本机开放端口和使用端口的进程 10、可以将任意FAT磁盘转换成NTFS格式。不同于格式化,此法不会破坏你原磁盘中的文件 11、增强任务管理器,比系统自带的好。好在哪里呢?它不但可以看见进程使用的内存大小,还可以看见进程的位置(也就是进程文件的路径),以方便你结束没用的和危险的进程!好! 12、 另外附加了一个“读心术”游戏,看看它是怎么看穿你的内心所想的!个人认为很神秘哟! 还有很多功能哦!!!! 说明:你可能会问,这么小的程序功能怎么可能这么多?我告诉你,它的功能就这么多!!!不信你试试看。 另外,本程序在Windows XP系统下完美测试成功。其它的操作系统,请自行测试是否所有功能可用。

18,356

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 网络编程
c++c语言开发语言 技术论坛(原bbs)
社区管理员
  • 网络编程
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧