我有以下vbscript代码返回本地IP地址。它效果很好。我试图在我的winform.net应用程序中提供相同的功能。如何在.NET中获得本地IP?
我遇到的所有解决方案都涉及使用DNS。关于如何“移植”脚本以便在.net中使用的任何想法?
不同的方式来做到这一点可能?
谢谢!
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
感谢您抽出宝贵时间! DNS要求他们目前有权访问我们的DNS,对吗?除非该声明不真实,否则我的问题在于我的应用程序是有时连接的应用程序,并不总是在我们的家庭网络上。他们可能在家或在客户家中。附: - >我觉得有趣的是,你有4个upvotes的答案是违背我发布的。我的意思是没有进攻,只是我在这里注意到越来越多的观察。 再次感谢! – 2009-06-05 16:59:55
嗯,任何想法,为什么这将返回此 - > fe80 :: ad11:2dc5:58af:a24b%14? – 2009-06-05 17:05:27
@Refracted Paladin - 这是一个IPv6 IP地址。 – 2009-06-05 17:14:42