HKEY_LOCAL_MACHINE\\SYSTEM\\ControlSet001\\Services\\Tcpip\\Parameters\\Interfaces\\%s
注册表下有DhcpIPAddress和NameServer这两个项的值,到底哪像是DHCP的IP地址? 

解决方案 »

  1.   

    DhcpIPAddress是DHCP给你分配的局域网的IP
      

  2.   

    看了下连接的状态,DhcpIPAddress确实是我客户端IP。呵呵,
    服务端IP在注册表里还是没搜索到
      

  3.   

    HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters子项的DHCPNameServer的字符串值项为DHCP服务器地址
      

  4.   

    没DHCPNameServer这子项
    IPAutoconfigurationAddress这项有我本地连接的IP地址。
    可ADSL宽带连接的DHCP服务器IP还是不知道在哪
      

  5.   

    是啊,没有。我这段代码都读不到信息 int ret = 0;#ifdef _WIN32
    int i;
    LONG err;
    HKEY hKey, hSub;
    char subkey[512], dhcpns[512], ns[512], value[128], *key =
    "SYSTEM\\ControlSet001\\Services\\Tcpip\\Parameters\\Interfaces";

    if ((err = RegOpenKey(HKEY_LOCAL_MACHINE,
        key, &hKey)) != ERROR_SUCCESS) {
    fprintf(stderr, "cannot open reg key %s: %d\n", key, err);
    ret--;
    } else {
    for (ret--, i = 0; RegEnumKey(hKey, i, subkey,
        sizeof(subkey)) == ERROR_SUCCESS; i++) {
    DWORD type, len = sizeof(value);
    if (RegOpenKey(hKey, subkey, &hSub) == ERROR_SUCCESS &&
        (RegQueryValueEx(hSub, "DhcpNameServer", 0,
        &type, value, &len) == ERROR_SUCCESS ||
        RegQueryValueEx(hSub, "DhcpNameServer", 0,
        &type, value, &len) == ERROR_SUCCESS)) {
    dns->sa.sin_addr.s_addr = inet_addr(value);
    ret++;
    RegCloseKey(hSub);
    break;
    }
    }
    RegCloseKey(hKey);
    }
    #else
      

  6.   

    你读的是“SYSTEM\\ControlSet001\.....”!!!!!!!!!!!!!!!!!!
      

  7.   

    HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters子项的DHCPNameServer的字符串值项为DHCP服务器地址
      

  8.   

    CurrentControlSet下也没有。算了,明天用公司的电脑看看
      

  9.   

    你看看你的代码,读的是什么,好吗?好吗?好吗?!!!!!!!!!!!!!!!!
    char    subkey[512], dhcpns[512], ns[512], value[128], *key =
        "SYSTEM\\ControlSet001\\Services\\Tcpip\\Parameters\\Interfaces";
      

  10.   

    我代码是读的这个。我刚是打开注册表看的CurrentControlSet
      

  11.   

    bohut,谢啦。
    好晚了,我睡觉去了,晚安
      

  12.   

    DHCP不需要服务器地址。只要在网段内有个服务器就行,因为是广播的。这是因为在dhcp获得地址之前,你是没有地址的(所以才需要dhcp获取地址嘛)。既然自己没有地址,有了服务器地址也没法连接啊。所以dhcp服务器地址是不必要的,给了也用不上。
      

  13.   

    DHCPNameServer的值在不同网络中是动态改变的, 有可能与交换机配置有关,测试了一下, DHCPNameServer与我在交换机上配置的ip relay address相同(可以出现多个dhcp server的地址), 
    实际的dhcp server需要读在HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\{xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx}\Parameters\Tcpip项下的dhcpserver的值注: {xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx}是网卡对应的类名称, 可以通过枚举HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Network\{4D36E972-E325-11CE-BFC1-08002BE10318}项下的子项,找Connection\Name == 本机网卡的名称(如"本地连接")