我已經為辦公室 SQL 服務器撰寫了一個 VB .Net 前端。我想擴展它,以便用戶可以通過 VPN 訪問服務器。在測驗程序時,如果我在每臺客戶端 PC 上也啟用了“檔案和列印機共享”,我只能通過 VPN 查看 SQL 服務器,因此我需要一些代碼來檢查 VPN 和共享是否都已啟用,然后再嘗試訪問服務器。我有以下三行檢查 VPN 是否正在運行:
Dim myInterfaceList As NetworkInterface() = NetworkInterface.GetAllNetworkInterfaces
Dim myVPNRunning As Boolean = myInterfaceList.AsEnumerable().Any(Function(x) x.Name = "MyTestVPN")
If myVPNRunning Then chkProgress3.Checked = True
但我找不到方法(在 VB .NET 中)來檢查客戶端 PC 是否啟用了“檔案和列印機共享”。我發現這篇文章1討論了使用 Powershell 進行檢查,但我不知道如何將其轉換為 VB .Net 代碼(或者即使這是正確/最好的方法)。辦公網路不是域,所以我無法通過組策略啟用共享。
有沒有其他人解決過這個問題?謝謝,蒂姆
uj5u.com熱心網友回復:
下面顯示了如何在 VB.NET 中使用 PowerShell 檢查是否啟用了檔案和列印機共享。
下載/安裝適用于 PowerShell 的 NuGet 包
Microsoft.PowerShell.5.1.ReferenceAssemblies(.NET 框架)Microsoft.PowerShell.SDK(.NET 6)
有關更多資訊,請參閱此帖子。
添加以下 Imports 陳述句:
Imports System.Management.Automation
IsFileAndPrinterSharingEnabled:
Private Function IsFileAndPrinterSharingEnabled() As Boolean
Using ps As PowerShell = PowerShell.Create()
Dim result As String = ps.AddScript("Get-NetAdapterBinding | ? {$_.DisplayName -eq 'File and Printer Sharing for Microsoft Networks' -and $_.Name -eq 'ethernet'} | Select -ExpandProperty Enabled").Invoke()(0).ToString()
'Dim result As String = ps.AddScript("Get-NetAdapterBinding | ? {$_.DisplayName -eq 'File and Printer Sharing for Microsoft Networks' -and $_.Name -eq 'ethernet'} | ForEach-Object {$_.Enabled}").Invoke()(0).ToString()
If result = "True" Then
Return True
End If
End Using
Return False
End Function
資源:
- 檔案和列印機共享狀態
- 使用 PowerShell 輸出沒有列標題的資料
其他資源
- 無法從客戶端設備通過 C# 表單應用程式訪問我的 SQL Server
- SMB:檔案和列印機共享埠應該打開
- 如何在 Windows 中檢測、啟用和禁用 SMBv1、SMBv2 和 SMBv3
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/496419.html
