我正在尝试开发一个使用 vb.net 管理防火墙端口的代码。第一部分是列出所有启用的端口。所以我正在尝试这段代码:
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 新手,我该如何克服这个问题?