Başlık, toplamları toplar. Yerel ağ arabiriminin DHCP üzerinden atanmış adresi olup olmadığını veya statik olarak java ile ayarlanmış olup olmadığını keşfetmenin herhangi bir yolu var mı?, ip adresinin dhcp ile atanıp atanmadığını veya manüel olarak java olarak ayarlanıp ayarlanmadığını belirler.
cevap
Bu nedenle, yalnızca Win NT 'çözümünü istedikçe, benim kodum burada. Geçerli yapılandırılmış değerler ile ağ arabirimlerini listeler.
Not EnableDHCP kayıt defteri anahtarının değeri, bunun önemli olduğunu düşünüyorum.
Sorunuz altında daha önce bahsettiğim gibi, en az basit JNI sarıcısına ihtiyacınız var.
Bu yardımcı olur umarım. Burada
fazla bilgi: 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;
}
Basit çıkışı:
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
harika - teşekkürler. – Patrick
Üzgünüm, Hayır, sanmıyorum.
, JAVA, aracılığıyla yapamazsınız, çünkü java'nın işletim sistemi ile ağ arabirimi sadece JVM'dir.
Bir jni, görevi yapmak için toplanabilir.
bunu bir java aracılığıyla yapmak mümkün olmazdı java aracılığıyla yapabilirsiniz? Ya da demek ki, bu bilgi doğal olarak mevcut değildir. – Patrick
Yani, java sorduğunuz bilgilere erişemiyor, belki bir c kodu java verebilir. bir kütüphane aynı şeyi yapabilir, fakat bu da OS'ye özeldir! –
- 1. Bir IP adresinin Java
- 2. Vimscript: vim ayarlarını değişken olarak kullanma/Belirli bir guioption ayarlanıp ayarlanmadığını kontrol etme
- 3. Kök kaydedicinin Python'da DEBUG seviyesine ayarlanıp ayarlanmadığını belirleme
- 4. PHP yöntemi/işlevinde isteğe bağlı parametrenin ayarlanıp ayarlanmadığını nasıl anlarsınız?
- 5. Tyrus WebSockets (Java) - istemci yerel ip adresinin nasıl ayarlanacağı
- 6. Bir Gönderi Adresinin Ülkeye Göre PHP (veya Perl) Olarak Biçimlendirilmesi
- 7. Birden fazla numara bayrağının ayarlanıp ayarlanmadığını nasıl kontrol ederim?
- 8. Tel kafesin renklerinin manüel olarak tanımlanması
- 9. Uzak Yuva Son Noktası IP Adresinin Alınması
- 10. IP adresinin etki alanı adına yeniden yönlendirilmesi
- 11. Nümerik olarak int'nin boyutunu ne belirler?
- 12. Değer setValue (JSlider, JSpinner) ile değil, elle ayarlanıp ayarlanmadığını nasıl kontrol edebilirim?
- 13. FactoryGirl ile params gönderme (paramleri karma olarak manüel olarak göndermenin tersine)?
- 14. IP adresini rubire olarak değiştir
- 15. OAuth2 jetonu parola olmadan manüel olarak yaratmanız gerekiyor
- 16. ACF alanları değeri, manüel olarak kaydedilene kadar kullanılamaz
- 17. Windows video kaynakları olarak Çoklu IP Kameralar?
- 18. INET6_ADDRSTRLEN neden C olarak 46 olarak tanımlandı?
- 19. Scala nesnesinde Bahar Otomatik Kablolu (veya manüel olarak kablolu) nasıl kullanılır?
- 20. Evrimleri manüel olarak nasıl uygularsınız ve oyun çerçevesinde çözülür olarak işaretleyin 2
- 21. MongoEngine - Sorgu - ListField öğesinin boş olup olmadığını veya nasıl ayarlanmadığını kontrol etme
- 22. Yuvalar: inet_pton() kullanarak ip adresinin ikili formunu maskeleme()
- 23. Sharepoint API'sini kullanarak bir Sharepoint Belge Kitaplığı Onay Gereksinim işareti ayarlanıp ayarlanmadığını nasıl kontrol ederim?
- 24. Java Sınıfı Yapıcı parametresi ile dinamik olarak
- 25. Facebook Uygulama Alanını IP Adresi Olarak Ayarlama
- 26. Android cihazın LAN ip adresi nasıl bulunur?
- 27. Şartlı olarak java
- 28. Herkesi otomatik olarak özel (Java) olarak değiştirin
- 29. varsayılan olarak veya
- 30. Java sözdizimi: Değişken olarak durum değiştir? java olarak
İlginç. Out java ile nasılsınız? – Jayan
DHCP aracılığıyla bir IP adresinin atanıp atanmadığını belirlemek istiyor musunuz? Yerel ağ arabiriminin IP adresi mi, yoksa herhangi bir IP adresi mi? Eğer eskiyse, her zaman "ipconfig" veya "ifconfig" çıktısını alabilirsiniz (yine de uygun sistem çağrısını bulmak daha iyi olabilir). –
Sadece yerel ağ arayüzünü belirlemeye çalışıyor. Bunu yapmak için çapraz platform bir yol arıyorum. Eğer zaten kimliği olmayan biri varsa, kendimi kazmaktan mutlu olurum, sadece tekerleği yeniden icat etmekten kaçınmak istedim. – Patrick