请问如何编程得到本地区的域名服务器地址(DNS)?

qqfqqf 2003-02-25 10:30:07
请问如何编程得到本地区的域名服务器地址(DNS)?
...全文
69 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
l_clove 2003-02-25
  • 打赏
  • 举报
回复
gz
纪俊 2003-02-25
  • 打赏
  • 举报
回复
这是以前的一点资料,我贴给你
/////////////////////////////////////////////////////////////////////////////////
通过注册表只能来读取参数!!所有对注册表的修改都需要重新引导!!
方法是通过通过WinExec("netsh -c interface ip dump >c:\interface.txt")的方式可以导出配置脚本后修改interface.txt文件后将该文件倒入:WinExec("netsh -f c:\\interface.txt").
但是你也可以查下资料看看可不可以通过netsh直接修改DNS。我只知道修改IP,GATEWAY,METRIC等没有修改过DNS :)
(注:要求OS为WIN2000)
/////////////////////////////////////////////////////////////////////////////////
Win2k中通过控制台添加一个新的DNS以后会在system32\dns下产生一个域名.dns的文件,并且在注册表中也添加了相应的键值.但是通过api添加的函数就不太清楚了.

NowCan 2003-02-25
  • 打赏
  • 举报
回复
什么是本地区的域名服务器?
如果是本机设置,用Iphelp就可以。
DWORD Network_Test(FILE *fp, BOOL IsNT)
{
FIXED_INFO *FixedInfo;
IP_ADAPTER_INFO *AdapterInfo, *NextAdapterInfo;
IP_ADDR_STRING *pIPAddr;
DWORD dwRetVal;
ULONG ulOutBufLen;
char *NodeType;

fprintf(fp, "-----Network Information-----\n");
FixedInfo= (FIXED_INFO *)GlobalAlloc(GPTR, sizeof(FIXED_INFO));
ulOutBufLen=sizeof(FIXED_INFO);

if(ERROR_BUFFER_OVERFLOW == GetNetworkParams(FixedInfo, &ulOutBufLen))
{
GlobalFree(FixedInfo);
FixedInfo= (FIXED_INFO *)GlobalAlloc(GPTR, ulOutBufLen);
}

if((dwRetVal=GetNetworkParams(FixedInfo, &ulOutBufLen)) != ERROR_SUCCESS)
{
fprintf(fp, "Call to GetNetworkParams failed. Return Value: %08x\n", dwRetVal);
}
else
{
switch(FixedInfo->NodeType)
{
case BROADCAST_NODETYPE: NodeType="Broadcase Node"; break;
case PEER_TO_PEER_NODETYPE: NodeType="Peer to Peer Node"; break;
case MIXED_NODETYPE: NodeType="Mixed Node"; break;
case HYBRID_NODETYPE: NodeType="Hybrid Node"; break;
default: NodeType="Unknown Node"; break;
}

fprintf(fp, "Host Name.......:%s\n", FixedInfo->HostName);
fprintf(fp, "Domain Name.....:%s\n", FixedInfo->DomainName);
fprintf(fp, "Node type.......:%d - %s\n", FixedInfo->NodeType, NodeType);
fprintf(fp, "Enable Routing..:%s\n", (FixedInfo->EnableRouting != 0) ? "Yes" : "No");
fprintf(fp, "Enable Proxy....:%s\n", (FixedInfo->EnableProxy != 0) ? "Yes" : "No");
fprintf(fp, "Enable DNS......:%s\n", (FixedInfo->EnableDns != 0) ? "Yes" : "No");
fprintf(fp, "DNS Servers:\n");
fprintf(fp, "\t%s\n", FixedInfo->DnsServerList.IpAddress.String);

pIPAddr=FixedInfo->DnsServerList.Next;
while(pIPAddr)
{
fprintf(fp, "\t%s\n", pIPAddr->IpAddress.String);
pIPAddr=pIPAddr->Next;
}
}

GlobalFree(FixedInfo);
fprintf(fp,"\n");

AdapterInfo= (IP_ADAPTER_INFO *)GlobalAlloc(GPTR, sizeof(IP_ADAPTER_INFO));
ulOutBufLen=sizeof(IP_ADAPTER_INFO);

if(ERROR_BUFFER_OVERFLOW == GetAdaptersInfo(AdapterInfo, &ulOutBufLen))
{
GlobalFree(AdapterInfo);
AdapterInfo= (IP_ADAPTER_INFO *)GlobalAlloc(GPTR, ulOutBufLen);
}

if((dwRetVal=GetAdaptersInfo(AdapterInfo, &ulOutBufLen)) != ERROR_SUCCESS)
{
fprintf(fp, "Call to GetNetworkParams failed. Return Value: %08x\n", dwRetVal);
}
else
{
NextAdapterInfo=AdapterInfo;
while(NextAdapterInfo)
{
fprintf(fp, "------------Adapter %d--------------\n", NextAdapterInfo->Index);
fprintf(fp, "Adapter Name..............:%s\n", NextAdapterInfo->AdapterName);
fprintf(fp, "Adapter description.......:%s\n", NextAdapterInfo->Description);
fprintf(fp, "DHCP enabled..............:%s\n", NextAdapterInfo->DhcpEnabled ? "Yes" : "No");
fprintf(fp, "Current IP................:%s\n", NextAdapterInfo->IpAddressList.IpAddress.String);
fprintf(fp, "Subnet mask...............:%s\n", NextAdapterInfo->IpAddressList.IpMask.String);
pIPAddr=NextAdapterInfo->IpAddressList.Next;
while(pIPAddr)
{
fprintf(fp, "\t IP: %s\n", pIPAddr->IpAddress.String);
fprintf(fp, "\t Mask: %s\n", pIPAddr->IpMask.String);
pIPAddr=pIPAddr->Next;
}
fprintf(fp, "Default gateway...........:%s\n", NextAdapterInfo->GatewayList.IpAddress.String);
fprintf(fp, "DHCP server...............:%s\n", NextAdapterInfo->DhcpServer.IpAddress.String);
fprintf(fp, "Use WINS..................:%s\n", NextAdapterInfo->HaveWins?"Yes":"No");
fprintf(fp, "Primary WINS server.......:%s\n", NextAdapterInfo->PrimaryWinsServer.IpAddress.String);
fprintf(fp, "Secondary WINS server.....:%s\n", NextAdapterInfo->SecondaryWinsServer.IpAddress.String);

NextAdapterInfo=NextAdapterInfo->Next;
}
}

GlobalFree(AdapterInfo);

return 0;
}

1,317

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder 网络及通讯开发
社区管理员
  • 网络及通讯开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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