2008-11-26 36 views

Trả lời

6

tìm thấy ở đây 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 
+0

Làm việc hoàn hảo, ngay ra khỏi hộp. Sử dụng mã từ liên kết khi nó được tạo hình tốt hơn khi cắt và dán. – user38349

3

một giải pháp là ánh xạ thư mục mạng với một ký tự ổ đĩa có sẵn. Bạn có thể thực hiện điều đó bằng cách sử dụng các lệnh của Windows OS:

System.Diagnostics.Process.Start("net.exe", "use K: \\Server\URI\path\here /USER:<username> <password>") 

Chỉ cần thay thế tên người dùng và mật khẩu bằng thông tin bạn cần và đảm bảo có sẵn ký tự ổ đĩa.

Để ngắt kết nối, bạn có thể gọi

System.Diagnostics.Process.Start("net.exe", "use /delete K:") 
+0

Trong trường hợp của tôi nó là đủ để thực hiện lệnh này mà không chỉ định một tên ổ 'Process.Start ("net.exe" , "sử dụng \\ Máy chủ \ URI \ đường dẫn \ tại đây/USER: ") '. Và sau đó bất kỳ nỗ lực tiếp theo nào để truy cập đường dẫn này sẽ không yêu cầu thông tin đăng nhập. – Monsignor

Các vấn đề liên quan