2012-09-22 8 views
7

शीर्षक में सेट किया गया है। क्या यह पता लगाने का कोई तरीका है कि स्थानीय नेटवर्क इंटरफ़ेस में इसका पता डीएचसीपी के माध्यम से असाइन किया गया है या यदि यह स्थिर रूप से जावा के माध्यम से सेट किया गया है?प्रोग्रामेटिक रूप से निर्धारित करता है कि आईपी पता dhcp के माध्यम से असाइन किया गया है या मैन्युअल रूप से जावा

+0

दिलचस्प। आप जावा के साथ कैसे करते हैं? – Jayan

+0

आप यह निर्धारित करने के बारे में पूछ रहे हैं कि क्या आईपी पता डीएचसीपी के माध्यम से असाइन किया गया है ... क्या आपका मतलब स्थानीय नेटवर्क इंटरफ़ेस का आईपी पता है, या कोई मनमाना आईपी पता है? यदि पूर्व, आप हमेशा 'ipconfig' या 'ifconfig' के आउटपुट को स्क्रैप कर सकते हैं (हालांकि उचित सिस्टम कॉल को ढूंढना शायद बेहतर है)। –

+0

बस स्थानीय नेटवर्क इंटरफ़ेस निर्धारित करने का प्रयास कर रहा है। मैं इसे करने के लिए एक क्रॉस प्लेटफ़ॉर्म तरीका ढूंढ रहा हूं। यदि कोई पहले से ही आईडी में खुद को खोदने में खुश नहीं है, तो बस पहिया को फिर से शुरू करने से बचाना चाहता था। – Patrick

उत्तर

3

इसलिए, जैसा कि आपने केवल विन एनटी 'समाधान' का अनुरोध किया है, यहां मेरा कोड है। यह वर्तमान कॉन्फ़िगर किए गए मानों के साथ नेटवर्क इंटरफेस सूचीबद्ध करता है।

नोट सक्षम करेंएचएचसीपी रजिस्ट्री कुंजी मान, मुझे लगता है कि यह बिंदु है।

जैसा कि मैंने पहले ही आपके प्रश्न के तहत टिप्पणी में उल्लेख किया है, आपको कम से कम सरल जेएनआई रैपर की आवश्यकता है।

उम्मीद है कि इससे मदद मिलती है।

अधिक यहाँ जानकारी: http://support.microsoft.com/kb/314053

#include <windows.h> 

#define NETCARD_ROOT L"SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion\\NetworkCards" 
#define TCPIP_ROOT L"SYSTEM\\CurrentControlSet\\services\\Tcpip\\Parameters\\Interfaces" 

int _tmain(int argc, _TCHAR* argv[]) 
{ 

    //First enumerate all network adapters 

    HKEY hNetCardsKey; 
    LSTATUS lStatus = ERROR_SUCCESS; 

    lStatus = RegOpenKey(HKEY_LOCAL_MACHINE, 
     NETCARD_ROOT, 
     &hNetCardsKey); 

    if(ERROR_SUCCESS == lStatus) 
    { 
     DWORD dwCards = 0L; 
     DWORD dwMaxSubkeyNameLen = 0L; 
     lStatus = RegQueryInfoKey(hNetCardsKey, NULL, NULL, NULL, &dwCards, 
      &dwMaxSubkeyNameLen, NULL, NULL, NULL, NULL, NULL, NULL); 

     if(ERROR_SUCCESS == lStatus && dwCards) 
     { 
      for(DWORD i = 0; i < dwCards; i++) 
      { 
       TCHAR wszCurrentCardIdxName[MAX_PATH]; 
       wszCurrentCardIdxName[0] = '\0'; 
       lStatus = RegEnumKey(hNetCardsKey, i, 
        wszCurrentCardIdxName, MAX_PATH); 

       if(ERROR_SUCCESS == lStatus) 
       { 
        TCHAR wszAdapterKeyName[MAX_PATH]; 
        wszAdapterKeyName[0] = '\0'; 

        wsprintf(wszAdapterKeyName, L"%s\\%s", NETCARD_ROOT, 
         wszCurrentCardIdxName); 

        HKEY hCardNameKey; 

        lStatus = RegOpenKey(
         HKEY_LOCAL_MACHINE, 
         wszAdapterKeyName, 
         &hCardNameKey); 

        if(ERROR_SUCCESS == lStatus) 
        { 
         TCHAR wszServiceNameGuid[MAX_PATH]; 
         TCHAR wszAdapterName[MAX_PATH]; 

         DWORD dwSize = sizeof(wszServiceNameGuid); 
         wszServiceNameGuid[0] = '\0'; 
         RegQueryValueEx(
          hCardNameKey, 
          L"ServiceName", 
          NULL, 
          NULL, 
          (LPBYTE)wszServiceNameGuid, 
          &dwSize); 

         dwSize = sizeof(wszAdapterName); 
         RegQueryValueEx(
          hCardNameKey, 
          L"Description", 
          NULL, 
          NULL, 
          (LPBYTE)wszAdapterName, 
          &dwSize); 

         OutputDebugStringW(wszServiceNameGuid); 
         OutputDebugStringW(L"\n"); 

         RegCloseKey(hCardNameKey); 

         //Get parameters 
         TCHAR wszCardParamKey[MAX_PATH]; 
         wszCardParamKey[0] = '\0'; 
         wsprintf(wszCardParamKey,L"%s\\%s", TCPIP_ROOT, wszServiceNameGuid); 

         HKEY hParamKey = NULL; 

         lStatus = RegOpenKey(
          HKEY_LOCAL_MACHINE, 
          wszCardParamKey, 
          &hParamKey); 

         if(ERROR_SUCCESS == lStatus) 
         { 
          DWORD dwEnabledDHCP = 0L; 
          DWORD dwDWSize = sizeof(DWORD); 
          TCHAR wszStaticIP[32]; 
          TCHAR wszDHCPIP[32]; 
          DWORD dwIPSize = sizeof(wszDHCPIP); 

          ZeroMemory(wszDHCPIP, dwIPSize); 
          ZeroMemory(wszStaticIP, dwIPSize); 

          lStatus = RegQueryValueEx(
           hParamKey, 
           L"EnableDHCP", 
           NULL, NULL, 
           (LPBYTE)&dwEnabledDHCP, 
           &dwDWSize); 

          if(SUCCEEDED(lStatus)) 
          { 
           wprintf_s(L"Adapter : %s [%s] \n\tDHCP : %s\n", 
            wszServiceNameGuid, 
            wszAdapterName, 
            dwEnabledDHCP 
            ? L"Yes" : L"No"); 
          } 

          lStatus = RegQueryValueEx(
           hParamKey, 
           L"IPAddress", 
           NULL, 
           NULL, 
           (LPBYTE)&wszStaticIP, 
           &dwIPSize); 

          if(SUCCEEDED(lStatus)) 
          { 
           wprintf_s(L"\tConfigured IP Address : %s\n", wszStaticIP); 
          } 

          dwIPSize = sizeof(wszDHCPIP); 
          lStatus = RegQueryValueEx(
           hParamKey, 
           L"DhcpIPAddress", 
           NULL, 
           NULL, 
           (LPBYTE)&wszDHCPIP, 
           &dwIPSize); 

          if(SUCCEEDED(lStatus)) 
          { 
           wprintf_s(L"\tDHCP IP Address : %s\n", wszDHCPIP); 
          } 

          wprintf_s(L"\n"); 

          RegCloseKey(hParamKey); 
         } 

        } 
       } 
      } 
     } 


     RegCloseKey(hNetCardsKey); 
    } 


    return 0; 
} 

सरल उत्पादन:

Adapter : {6EC2554F-3359-43A2-AADB-57F427DC72FC} [Marvell Yukon 88E8072 PCI-E Gigabit Ethernet Controller] 
     DHCP : No 
     Configured IP Address : 192.168.5.10 
     DHCP IP Address : 192.168.1.102 

Adapter : {2A28BDA8-ED1D-4E6E-8990-485EE1836828} [Sony Ericsson Device 0016 USB Ethernet Emulation (NDIS 5)] 
     DHCP : Yes 
     Configured IP Address : 
     DHCP IP Address : 0.0.0.0 

Adapter : {491DC095-155F-4572-B975-2E1703C17632} [Microsoft Windows Mobile Remote Adapter] 
     DHCP : Yes 
     Configured IP Address : 
     DHCP IP Address : 169.254.2.2 

Adapter : {5F987E64-E804-42DA-9453-8E479B6FC835} [Broadcom 802.11b/g Network adapter] 
     DHCP : Yes 
     Configured IP Address : 
     DHCP IP Address : 192.168.1.14 
+0

अद्भुत - धन्यवाद। – Patrick

0

क्षमा करें, नहीं, मुझे ऐसा नहीं लगता है।
आप इसे जावा, के माध्यम से नहीं कर सकते क्योंकि ओएस के नेटवर्क के साथ जावा इंटरफेस सिर्फ जेवीएम है।
शायद काम करने के लिए एक जेनी को सम्मिलित किया जा सकता है।

+0

पर एक जेनी माध्यम से ऐसा करने में सक्षम नहीं होगा, आप इसे जावा के माध्यम से कर सकते हैं? या आप का मतलब है कि यह जानकारी उपलब्ध नहीं है। – Patrick

+0

मेरा मतलब है, जावा आपके द्वारा पूछे जा रहे जानकारी तक नहीं पहुंच सकता है, शायद एक सी कोड जावा दे सकता है। एक लाइब्रेरी का पालन करना वही कर सकता है, लेकिन वह भी ओएस विशिष्ट होगा! –

संबंधित मुद्दे