Я пытаюсь разработать код, который управляет портами брандмауэра с помощью vb.net. Первая часть - список всех разрешенных портов. так что я пытаюсь этот код:Получить список открытых портов, брандмауэр Windows
Function portsList()
Dim ports As INetFwOpenPorts
Dim port As INetFwOpenPort
Dim myPorts() As INetFwOpenPorts
Dim NetFwMgrType As Type = Type.GetTypeFromProgID("HNetCfg.FwMgr", False)
Dim mgr As INetFwMgr = DirectCast(Activator.CreateInstance(NetFwMgrType), INetFwMgr)
ports = DirectCast(mgr.LocalPolicy.CurrentProfile.GloballyOpenPorts, INetFwOpenPorts)
Dim enumerate As System.Collections.IEnumerator = ports.GetEnumerator()
Dim i As Integer
While enumerate.MoveNext()
port = DirectCast(enumerate.Current, INetFwOpenPort)
myPorts(i) = port
i += 1
End While
Dim portAsString() As String
For j As Integer = 0 To i
portAsString(j) = myPorts(j).ToString
Next
Return portAsString
End Function
Private Sub Button4_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button4.Click
Dim ports() As String = portsList()
Dim n As String = ports.Length
Dim newString As String = ""
For h As Integer = 0 To n
newString = ports(h) & vbNewLine
Next
RichTextBox1.Text = newString
End Sub
То, что я хочу сделать, это список всех портов в Richtextbox1
после нажатия Button4
. Ошибка, которую я получаю, составляет:
NullReferenceException не был отменен. В экземпляре объекта не задана ссылка на объект.
Я новичок в Vb, как я могу преодолеть это?
Задумывались ли вы о сканировании открытых портов, а не о получении списка из брандмауэра? – Sam
thanx @Sam Я не думал об этом. Как я уже сказал, я хочу заблокировать (закрыть) некоторые или все эти порты отрыть несколько, как мне это сделать в vb.net –
Посмотрите [здесь] (http://msdn.microsoft.com/ru -us/library/aa366423.aspx) и [здесь] (http://www.johnkoerner.com/index.php?/archives/49-Creating-a-Firewall-Exception-in-VB.Net.html). Кстати, сканирование каждого порта, чтобы увидеть, может ли его открытие или закрытие может занять некоторое время (около 30 минут на удаленной машине). – Sam