如何使用 VB.NET 打开受密码保护的共享网络文件夹?
声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow
原文地址: http://stackoverflow.com/questions/321128/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me):
StackOverFlow
How to open a password protected shared network folder using VB.NET?
提问by user38349
I need to open a password protected shared folder on a network to gain access to an Access 97 database. How do I open the folder and pass in the password?
我需要在网络上打开受密码保护的共享文件夹才能访问 Access 97 数据库。如何打开文件夹并输入密码?
采纳答案by Fredou
found here http://www.mredkj.com/vbnet/vbnetmapdrive.html
在这里找到http://www.mredkj.com/vbnet/vbnetmapdrive.html
Public Declare Function WNetAddConnection2 Lib "mpr.dll" Alias "WNetAddConnection2A" _
( ByRef lpNetResource As NETRESOURCE, ByVal lpPassword As String, _
ByVal lpUserName As String, ByVal dwFlags As Integer) As Integer
Public Declare Function WNetCancelConnection2 Lib "mpr" Alias "WNetCancelConnection2A" _
(ByVal lpName As String, ByVal dwFlags As Integer, ByVal fForce As Integer) As Integer
<StructLayout(LayoutKind.Sequential)> _
Public Structure NETRESOURCE
Public dwScope As Integer
Public dwType As Integer
Public dwDisplayType As Integer
Public dwUsage As Integer
Public lpLocalName As String
Public lpRemoteName As String
Public lpComment As String
Public lpProvider As String
End Structure
Public Const ForceDisconnect As Integer = 1
Public Const RESOURCETYPE_DISK As Long = &H1
Public Function MapDrive(ByVal DriveLetter As String, ByVal UNCPath As String) As Boolean
Dim nr As NETRESOURCE
Dim strUsername As String
Dim strPassword As String
nr = New NETRESOURCE
nr.lpRemoteName = UNCPath
nr.lpLocalName = DriveLetter & ":"
strUsername = Nothing '(add parameters to pass this if necessary)
strPassword = Nothing '(add parameters to pass this if necessary)
nr.dwType = RESOURCETYPE_DISK
Dim result As Integer
result = WNetAddConnection2(nr, strPassword, strUsername, 0)
If result = 0 Then
Return True
Else
Return False
End If
End Function
Public Function UnMapDrive(ByVal DriveLetter As String) As Boolean
Dim rc As Integer
rc = WNetCancelConnection2(DriveLetter & ":", 0, ForceDisconnect)
If rc = 0 Then
Return True
Else
Return False
End If
End Function
回答by Dirk Vollmar
one solution would be to map the network folder to an available drive letter. You could accomplish that using Windows OS commands:
一种解决方案是将网络文件夹映射到可用的驱动器号。您可以使用 Windows 操作系统命令完成此操作:
System.Diagnostics.Process.Start("net.exe", "use K: \Server\URI\path\here /USER:<username> <password>" )
Simply replace the username and password with the credentials you need and make sure the drive letter is available.
只需用您需要的凭据替换用户名和密码,并确保驱动器号可用。
To disconnect you can call
要断开连接,您可以拨打
System.Diagnostics.Process.Start("net.exe", "use /delete K:" )

