Tengo el siguiente código vbscript que devuelve la dirección IP local. Funciona muy bien. Estoy tratando de proporcionar la misma funcionalidad en mi aplicación winform .net.¿Cómo puedo obtener IP local en .NET?
Todas las soluciones que he encontrado implican el uso de DNS. ¿Alguna idea sobre cómo "portar" este script para su uso en .net?
¿Una forma diferente de hacer esto tal vez?
Gracias!
Function GetIP()
Dim ws : Set ws = CreateObject("WScript.Shell")
Dim fso : Set fso = CreateObject("Scripting.FileSystemObject")
Dim TmpFile : TmpFile = fso.GetSpecialFolder(2) & "/ip.txt"
Dim ThisLine, IP
If ws.Environment("SYSTEM")("OS") = "" Then
ws.run "winipcfg /batch " & TmpFile, 0, True
Else
ws.run "%comspec% /c ipconfig > " & TmpFile, 0, True
End If
With fso.GetFile(TmpFile).OpenAsTextStream
Do While NOT .AtEndOfStream
ThisLine = .ReadLine
If InStr(ThisLine, "Address") <> 0 Then IP = Mid(ThisLine, InStr(ThisLine, ":") + 2)
Loop
.Close
End With
If IP <> "" Then
If Asc(Right(IP, 1)) = 13 Then IP = Left(IP, Len(IP) - 1)
End If
GetIP = IP
fso.GetFile(TmpFile).Delete
Set fso = Nothing
Set ws = Nothing
End Function
Mismo problema que el comentario que hice anteriormente. Está volviendo -> fe80 :: ad11: 2dc5: 58af: a24b% 14 que ahora he descubierto que es mi dirección IPv6. –
hmm. Voy a aceptar esto como la respuesta, ya que en realidad devuelve la dirección IPv4 correcta en cualquier casilla que no tenga IPv6; que son todos en mi público objetivo, así que esto funciona. Me interesaría averiguar cómo elegir una entrada específica, pero ... ¡ay! –
hmm, no se puede resolver AddressFamily .... –