शीर्षक में सेट किया गया है। क्या यह पता लगाने का कोई तरीका है कि स्थानीय नेटवर्क इंटरफ़ेस में इसका पता डीएचसीपी के माध्यम से असाइन किया गया है या यदि यह स्थिर रूप से जावा के माध्यम से सेट किया गया है?प्रोग्रामेटिक रूप से निर्धारित करता है कि आईपी पता dhcp के माध्यम से असाइन किया गया है या मैन्युअल रूप से जावा
उत्तर
इसलिए, जैसा कि आपने केवल विन एनटी 'समाधान' का अनुरोध किया है, यहां मेरा कोड है। यह वर्तमान कॉन्फ़िगर किए गए मानों के साथ नेटवर्क इंटरफेस सूचीबद्ध करता है।
नोट सक्षम करेंएचएचसीपी रजिस्ट्री कुंजी मान, मुझे लगता है कि यह बिंदु है।
जैसा कि मैंने पहले ही आपके प्रश्न के तहत टिप्पणी में उल्लेख किया है, आपको कम से कम सरल जेएनआई रैपर की आवश्यकता है।
उम्मीद है कि इससे मदद मिलती है।
अधिक यहाँ जानकारी: 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
अद्भुत - धन्यवाद। – Patrick
क्षमा करें, नहीं, मुझे ऐसा नहीं लगता है।
आप इसे जावा, के माध्यम से नहीं कर सकते क्योंकि ओएस के नेटवर्क के साथ जावा इंटरफेस सिर्फ जेवीएम है।
शायद काम करने के लिए एक जेनी को सम्मिलित किया जा सकता है।
पर एक जेनी माध्यम से ऐसा करने में सक्षम नहीं होगा, आप इसे जावा के माध्यम से कर सकते हैं? या आप का मतलब है कि यह जानकारी उपलब्ध नहीं है। – Patrick
मेरा मतलब है, जावा आपके द्वारा पूछे जा रहे जानकारी तक नहीं पहुंच सकता है, शायद एक सी कोड जावा दे सकता है। एक लाइब्रेरी का पालन करना वही कर सकता है, लेकिन वह भी ओएस विशिष्ट होगा! –
- 1. प्रोग्रामेटिक रूप से निर्धारित करता है कि आईआईएस एक्सप्रेस
- 2. प्रोग्रामेटिक रूप से निर्धारित करता है कि कोको ऐप
- 3. प्रोग्रामेटिक रूप से निर्धारित करता है कि कौन सा जावा थ्रेड लॉक रखता है
- 4. यह जांचने के लिए कि iCloud प्रोग्रामेटिक रूप से कॉन्फ़िगर किया गया है या नहीं,
- 5. प्रोग्रामेटिक रूप से निर्धारित करता है कि एक COM लाइब्रेरी (डीएलएल) स्थापित है
- 6. मैन्युअल रूप से
- 7. पाइथन मैन्युअल रूप से
- 8. getChildFragmentManager() प्रोग्रामेटिक रूप से (गतिशील रूप से) जोड़ा गया टुकड़े?
- 9. निर्धारित करें कि सिस्टम विस्तृत बैकअप प्रोग्रामेटिक रूप से
- 10. प्रोग्रामेटिक रूप से निर्धारित निरंतर DEFAULT मान
- 11. जांचें कि एसडी कार्ड उपलब्ध है या प्रोग्रामेटिक रूप से
- 12. एंड्रॉइड: संसाधन आईडी के माध्यम से प्रोग्रामेटिक रूप से पुनरावृत्त
- 13. UISegmentedControl मूल्य प्रोग्रामेटिक रूप से बदल गया
- 14. मार्शल मैन्युअल रूप से
- 15. मैन्युअल रूप से आईडी
- 16. जीमेल प्रोग्रामेटिक रूप से
- 17. मैन्युअल रूप से कॉमप्रेट
- 18. प्रोग्रामेटिक रूप से निर्धारित करें कि मेरे बॉक्स
- 19. मैन्युअल रूप से devise
- 20. एनयूनीट प्रोग्रामेटिक रूप से
- 21. मैन्युअल रूप से उन्हें
- 22. मैन्युअल रूप से सी # ऑब्जेक्ट्स
- 23. यह निर्धारित करना कि एक एंड्रॉइड डिवाइस प्रोग्रामेटिक रूप से रूट है या नहीं?
- 24. GridView प्रोग्रामेटिक रूप से
- 25. QTreeView प्रोग्रामेटिक रूप से
- 26. प्रोग्रामेटिक रूप से एंड्रॉइड
- 27. यह पता कैसे लगाएं कि यूआरएल ईकॉमर्स या गैर ईकॉमर्स वेबसाइट है, प्रोग्रामेटिक रूप से?
- 28. जेटी प्रोग्रामेटिक रूप से
- 29. प्रोग्रामेटिक रूप से R.id
- 30. प्रोग्रामेटिक रूप से .NET
दिलचस्प। आप जावा के साथ कैसे करते हैं? – Jayan
आप यह निर्धारित करने के बारे में पूछ रहे हैं कि क्या आईपी पता डीएचसीपी के माध्यम से असाइन किया गया है ... क्या आपका मतलब स्थानीय नेटवर्क इंटरफ़ेस का आईपी पता है, या कोई मनमाना आईपी पता है? यदि पूर्व, आप हमेशा 'ipconfig' या 'ifconfig' के आउटपुट को स्क्रैप कर सकते हैं (हालांकि उचित सिस्टम कॉल को ढूंढना शायद बेहतर है)। –
बस स्थानीय नेटवर्क इंटरफ़ेस निर्धारित करने का प्रयास कर रहा है। मैं इसे करने के लिए एक क्रॉस प्लेटफ़ॉर्म तरीका ढूंढ रहा हूं। यदि कोई पहले से ही आईडी में खुद को खोदने में खुश नहीं है, तो बस पहिया को फिर से शुरू करने से बचाना चाहता था। – Patrick