请问VB中如何分别   获取和修改   DNS的IP地址?问题解决后100分相送!!!

解决方案 »

  1.   

    这里也有:
    http://community.csdn.net/Expert/topic/2641/2641325.xml?temp=.4726526
    http://community.csdn.net/Expert/topic/3450/3450964.xml?temp=5.358523E-02
    调用一下函数:Function ChangeIP(IP As String, NM As String, GW As String) As String
    'If MsgBox("no to exit", vbYesNo) = vbNo Then End
    Dim strComputer, objWMIService, colNetAdapters, strIPAddress, strSubnetMask
    Dim strGateway, strGatewaymetric, objNetAdapter, errEnable, errGateways
    strComputer = "."
    Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2")
    Set colNetAdapters = objWMIService.ExecQuery("Select * from Win32_NetworkAdapterConfiguration where IPEnabled=TRUE")
    strIPAddress = Array(IP) 'ip地址
    strSubnetMask = Array(NM) '子网掩码
    strGateway = Array(GW) '网关
    strGatewaymetric = Array(1)
     
    For Each objNetAdapter In colNetAdapters
    errEnable = objNetAdapter.EnableStatic(strIPAddress, strSubnetMask)
        errGateways = objNetAdapter.SetGateways(strGateway, strGatewaymetric)
        If errEnable = 0 Then
            ChangeIP = "OK"
        Else
            ChangeIP = "FIN"
        End If
    NextEnd Function在XP、2003上通过。
      

  2.   

    http://www.fltvu.com/jiaocheng/chenxu2/component/Internet/DNSLookUp.zip
    查找网络计算机的主机名或IP地址
      

  3.   

    直接调用DOS命令
    用SHELL调用
      

  4.   

    HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Services\Tcpip\Parameters\Interfaces\{91186003-87DF-4E48-AED3-EBF56650468D}\nameserver
      

  5.   

    IPCONFIG的原代码
    /******************************************************************************\
    *       This is a part of the Microsoft Source Code Samples.
    *       Copyright 1996 - 1998 Microsoft Corporation.
    *       All rights reserved.
    *       This source code is only intended as a supplement to
    *       Microsoft Development Tools and/or WinHelp documentation.
    *       See these sources for detailed information regarding the
    *       Microsoft samples programs.
    \******************************************************************************//*
    Module Name:    Ipconfig.cppAbstract:    This module illustrates how to programmatically retrieve IP configuration
        information similar to the IPCONFIG.EXE utility.  It demonstrates how to use
        the IP Helper APIs GetNetworkParams() and GetAdaptersInfo().    To execute this application, simply build the application using the Microsoft Visual C++
        nmake.exe program generation utility to make an executable ipconfig.exe.  After the
        build is complete, simply execute the resulting ipconfig.exe program.
    Author:    Jim Ohlund 21-Apr-98Revision History:*/
    #include <windows.h>
    #include <iphlpapi.h>
    #include <stdio.h>
    #include <time.h>void main(void) {    DWORD Err;    PFIXED_INFO pFixedInfo;
        DWORD FixedInfoSize = 0;    PIP_ADAPTER_INFO pAdapterInfo, pAdapt;
        DWORD AdapterInfoSize;
        PIP_ADDR_STRING pAddrStr;    //
        // Get the main IP configuration information for this machine using a FIXED_INFO structure
        //
        if ((Err = GetNetworkParams(NULL, &FixedInfoSize)) != 0)
        {
            if (Err != ERROR_BUFFER_OVERFLOW)
            {
                printf("GetNetworkParams sizing failed with error %d\n", Err);
                return;
            }
        }    // Allocate memory from sizing information
        if ((pFixedInfo = (PFIXED_INFO) GlobalAlloc(GPTR, FixedInfoSize)) == NULL)
        {
            printf("Memory allocation error\n");
            return;
        }    if ((Err = GetNetworkParams(pFixedInfo, &FixedInfoSize)) == 0)
        {
            printf("\tHost Name . . . . . . . . . : %s\n", pFixedInfo->HostName);
            printf("\tDNS Servers . . . . . . . . : %s\n", pFixedInfo->DnsServerList.IpAddress.String);
            pAddrStr = pFixedInfo->DnsServerList.Next;
            while(pAddrStr)
            {
                printf("%52s\n", pAddrStr->IpAddress.String);
                pAddrStr = pAddrStr->Next;
            }        printf("\tNode Type . . . . . . . . . : ");
            switch (pFixedInfo->NodeType)
            {
                case 1:
                    printf("%s\n", "Broadcast");
                    break;
                case 2:
                    printf("%s\n", "Peer to peer");
                    break;
                case 4:
                    printf("%s\n", "Mixed");
                    break;
                case 8:
                    printf("%s\n", "Hybrid");
                    break;
                default:
                    printf("\n");
            }        printf("\tNetBIOS Scope ID. . . . . . : %s\n", pFixedInfo->ScopeId);
            printf("\tIP Routing Enabled. . . . . : %s\n", (pFixedInfo->EnableRouting ? "yes" : "no"));
            printf("\tWINS Proxy Enabled. . . . . : %s\n", (pFixedInfo->EnableProxy ? "yes" : "no"));
            printf("\tNetBIOS Resolution Uses DNS : %s\n", (pFixedInfo->EnableDns ? "yes" : "no"));
        } else
        {
            printf("GetNetworkParams failed with error %d\n", Err);
            return;
        }    //
        // Enumerate all of the adapter specific information using the IP_ADAPTER_INFO structure.
        // Note:  IP_ADAPTER_INFO contains a linked list of adapter entries.
        //
        AdapterInfoSize = 0;
        if ((Err = GetAdaptersInfo(NULL, &AdapterInfoSize)) != 0)
        {
            if (Err != ERROR_BUFFER_OVERFLOW)
            {
                printf("GetAdaptersInfo sizing failed with error %d\n", Err);
                return;
            }
        }    // Allocate memory from sizing information
        if ((pAdapterInfo = (PIP_ADAPTER_INFO) GlobalAlloc(GPTR, AdapterInfoSize)) == NULL)
        {
            printf("Memory allocation error\n");
            return;
        }    // Get actual adapter information
        if ((Err = GetAdaptersInfo(pAdapterInfo, &AdapterInfoSize)) != 0)
        {
            printf("GetAdaptersInfo failed with error %d\n", Err);
            return;
        }    pAdapt = pAdapterInfo;    while (pAdapt)
        {
            switch (pAdapt->Type)
            {
                case MIB_IF_TYPE_ETHERNET:
                    printf("\nEthernet adapter ");
                    break;
                case MIB_IF_TYPE_TOKENRING:
                    printf("\nToken Ring adapter ");
                    break;
                case MIB_IF_TYPE_FDDI:
                    printf("\nFDDI adapter ");
                    break;
                case MIB_IF_TYPE_PPP:
                    printf("\nPPP adapter ");
                    break;
                case MIB_IF_TYPE_LOOPBACK:
                    printf("\nLoopback adapter ");
                    break;
                case MIB_IF_TYPE_SLIP:
                    printf("\nSlip adapter ");
                    break;
                case MIB_IF_TYPE_OTHER:
                default:
                    printf("\nOther adapter ");
            }
            printf("%s:\n\n", pAdapt->AdapterName);        printf("\tDescription . . . . . . . . : %s\n", pAdapt->Description);         printf("\tPhysical Address. . . . . . : ");
            for (UINT i=0; i<pAdapt->AddressLength; i++)
            {
                if (i == (pAdapt->AddressLength - 1))
                    printf("%.2X\n",(int)pAdapt->Address[i]);
                else
                    printf("%.2X-",(int)pAdapt->Address[i]);
            }                printf("\tDHCP Enabled. . . . . . . . : %s\n", (pAdapt->DhcpEnabled ? "yes" : "no"));        pAddrStr = &(pAdapt->IpAddressList);
            while(pAddrStr)
            {
                printf("\tIP Address. . . . . . . . . : %s\n", pAddrStr->IpAddress.String);
                printf("\tSubnet Mask . . . . . . . . : %s\n", pAddrStr->IpMask.String);
                pAddrStr = pAddrStr->Next;
            }        printf("\tDefault Gateway . . . . . . : %s\n", pAdapt->GatewayList.IpAddress.String);
            pAddrStr = pAdapt->GatewayList.Next;
            while(pAddrStr)
            {
                printf("%52s\n", pAddrStr->IpAddress.String);
                pAddrStr = pAddrStr->Next;
            }        printf("\tDHCP Server . . . . . . . . : %s\n", pAdapt->DhcpServer.IpAddress.String);
            printf("\tPrimary WINS Server . . . . : %s\n", pAdapt->PrimaryWinsServer.IpAddress.String);
            printf("\tSecondary WINS Server . . . : %s\n", pAdapt->SecondaryWinsServer.IpAddress.String);        struct tm *newtime;        // Display coordinated universal time - GMT 
            newtime = gmtime(&pAdapt->LeaseObtained);   
            printf( "\tLease Obtained. . . . . . . : %s", asctime( newtime ) );        newtime = gmtime(&pAdapt->LeaseExpires);   
            printf( "\tLease Expires . . . . . . . : %s", asctime( newtime ) );        pAdapt = pAdapt->Next;
        }
    }