VB .NET - 如何检查是否启用了"文件和打印机共享"



本人编写了一个VB . net前端的office SQL server。我想扩展这个功能,以便用户可以通过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是否启用了"文件和打印机共享"。我找到了这篇讨论使用Powershell检查的文章1,但我不知道如何将其转换为vb.net代码(或者即使这是正确/最好的方法)。办公室网络不是Domain,所以我不能通过组策略启用共享。

有其他人解决过这个问题吗?谢谢,蒂姆。

下面展示了如何检查在VB.NET中使用PowerShell是否启用了文件和打印机共享。

下载/安装PowerShell NuGet包

  • Microsoft.PowerShell.5.1.ReferenceAssemblies(。净框架)
  • Microsoft.PowerShell.SDK(;网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

相关内容

  • 没有找到相关文章

最新更新