文章編號: 173011 - 上次校閱: 2004年6月29日 - 版次: 2.1

如何新增和移除網路連線

系統提示本文適用於您使用的作業系統之外的作業系統。與您不相關的文章內容已停用。

在此頁中

全部展開 | 全部摺疊

結論

本文將告訴您,如何以程式設計方式建立和移除網路連線,就是使用 Windows API 函式。下列範例會新增連線至網路共用,並將中斷連線從相同的共用。

其他相關資訊

注意: 這個程式碼只包含最少錯誤設陷。它只會報告成功或失敗的 API 呼叫。使用這個程式碼的任何生產應該檢查 API 函式所傳回的值,並適當地處理錯誤。最常見的錯誤常數會列出針對此目的。

重製行為的步驟

  1. 建立新的標準 EXE 專案。
  2. 將模組加入至專案。
  3. 複製並貼入模組中的下列 Declares 和類型: (注意: 如果您在表單模組中加入了這,讓所有項目為私人)
          Declare Function WNetAddConnection2 Lib "mpr.dll" Alias _
          "WNetAddConnection2A" (lpNetResource As NETRESOURCE, _
          ByVal lpPassword As String, ByVal lpUserName As String, _
          ByVal dwFlags As Long) As Long
    
          Declare Function WNetCancelConnection2 Lib "mpr.dll" Alias _
          "WNetCancelConnection2A" (ByVal lpName As String, _
          ByVal dwFlags As Long, ByVal fForce As Long) As Long
    
          Type NETRESOURCE
            dwScope As Long
            dwType As Long
            dwDisplayType As Long
            dwUsage As Long
            lpLocalName As String
            lpRemoteName As String
            lpComment As String
            lpProvider As String
          End Type
    
          Public Const NO_ERROR = 0
          Public Const CONNECT_UPDATE_PROFILE = &H1
          ' The following includes all the constants defined for NETRESOURCE,
          ' not just the ones used in this example.
          Public Const RESOURCETYPE_DISK = &H1
          Public Const RESOURCETYPE_PRINT = &H2
          Public Const RESOURCETYPE_ANY = &H0
          Public Const RESOURCE_CONNECTED = &H1
          Public Const RESOURCE_REMEMBERED = &H3
          Public Const RESOURCE_GLOBALNET = &H2
          Public Const RESOURCEDISPLAYTYPE_DOMAIN = &H1
          Public Const RESOURCEDISPLAYTYPE_GENERIC = &H0
          Public Const RESOURCEDISPLAYTYPE_SERVER = &H2
          Public Const RESOURCEDISPLAYTYPE_SHARE = &H3
          Public Const RESOURCEUSAGE_CONNECTABLE = &H1
          Public Const RESOURCEUSAGE_CONTAINER = &H2
          ' Error Constants:
          Public Const ERROR_ACCESS_DENIED = 5&
          Public Const ERROR_ALREADY_ASSIGNED = 85&
          Public Const ERROR_BAD_DEV_TYPE = 66&
          Public Const ERROR_BAD_DEVICE = 1200&
          Public Const ERROR_BAD_NET_NAME = 67&
          Public Const ERROR_BAD_PROFILE = 1206&
          Public Const ERROR_BAD_PROVIDER = 1204&
          Public Const ERROR_BUSY = 170&
          Public Const ERROR_CANCELLED = 1223&
          Public Const ERROR_CANNOT_OPEN_PROFILE = 1205&
          Public Const ERROR_DEVICE_ALREADY_REMEMBERED = 1202&
          Public Const ERROR_EXTENDED_ERROR = 1208&
          Public Const ERROR_INVALID_PASSWORD = 86&
          Public Const ERROR_NO_NET_OR_BAD_PATH = 1203&
    
    						
  4. 將兩個 CommandButtons 加入至 Form1。根據預設,這些會是 Command1 和 Command2。
  5. 將下列程式碼加入至 Form1,替換 \\ServerName\ShareName"的有效的共用名稱:
          Option Explicit
    
          Private Sub Command1_Click()
          Dim NetR As NETRESOURCE
          Dim ErrInfo As Long
          Dim MyPass As String, MyUser As String
    
          NetR.dwScope = RESOURCE_GLOBALNET
          NetR.dwType = RESOURCETYPE_DISK
          NetR.dwDisplayType = RESOURCEDISPLAYTYPE_SHARE
          NetR.dwUsage = RESOURCEUSAGE_CONNECTABLE
          NetR.lpLocalName = "X:" ' If undefined, Connect with no device
          NetR.lpRemoteName = "\\ServerName\ShareName"   ' Your valid share
          'NetR.lpComment = "Optional Comment"
          'NetR.lpProvider =    ' Leave this undefined
    
          ' If the MyPass and MyUser arguments are null (use vbNullString), the
          ' user context for the process provides the default user name.
          ErrInfo = WNetAddConnection2(NetR, MyPass, MyUser, _
          CONNECT_UPDATE_PROFILE)
          If ErrInfo = NO_ERROR Then
            MsgBox "Net Connection Successful!", vbInformation, _
            "Share Connected"
          Else
            MsgBox "ERROR: " & ErrInfo & " - Net Connection Failed!", _
            vbExclamation, "Share not Connected"
          End If
          End Sub
    
          Private Sub Command2_Click()
          Dim ErrInfo As Long
          Dim strLocalName As String
    
          ' You may specify either the lpRemoteName or lpLocalName
          'strLocalName = "\\ServerName\ShareName"
          strLocalName = "X:"
          ErrInfo = WNetCancelConnection2(strLocalName, _
          CONNECT_UPDATE_PROFILE, False)
          If ErrInfo = NO_ERROR Then
            MsgBox "Net Disconnection Successful!", vbInformation, _
            "Share Disconnected"
          Else
            MsgBox "ERROR: " & ErrInfo & " - Net Disconnection Failed!", _
            vbExclamation, "Share not Disconnected"
          End If
          End Sub
    
    						
執行專案,然後按一下 Command1 上。您將會得到成功或失敗的訊息] 對話方塊。如果成功,應該要能夠在 Windows 檔案總管中尋找,並看到新的連線,(除非您向左的 lpLocalName 未定義,在這種情況下連線不會顯示在 [總管] 中)。按一下 Command2 並前往 [檔案總管,您應該會看到連線已被移除。

?考

使用 WNetAddConnection2 在不同的 Windows 平台上的限制有關請參閱下列的 「 Microsoft 知識庫 」 中的文件:
183366? (http://support.microsoft.com/kb/183366/EN-US/ ) : 資訊: WNetAddConnection2 」 與 「 多重使用者認證


如需詳細資訊請搜尋下列 Win32 程式設計人員參考或 [Microsoft 開發 o 人 h 員 ? 工 u 具 ? 網路程式庫光碟片中的主題上:
  • WNetAddConnection2
  • WNetCancelConnection2
  • NETRESOURCE

這篇文章中的資訊適用於:
  • Microsoft Visual Basic 6.0 Learning Edition
  • Microsoft Visual Basic 5.0 Learning Edition
  • Microsoft Visual Basic 6.0 Professional Edition
  • Microsoft Visual Basic 5.0 Professional Edition
  • Microsoft Visual Basic Enterprise Edition for Windows 6.0
  • Microsoft Visual Basic 5.0 Enterprise Edition
  • Microsoft Visual Basic Control Creation Edition
  • Microsoft Visual Basic 4.0 Standard Edition
  • Microsoft Visual Basic 4.0 Professional Edition
  • Microsoft Visual Basic 4.0 32-Bit Enterprise Edition
關鍵字:?
kbmt kbgrpdsvb kbhowto KB173011 KbMtzh
機器翻譯機器翻譯
重要:本文是以 Microsoft 機器翻譯軟體翻譯而成,而非使用人工翻譯而成。Microsoft 同時提供使用者人工翻譯及機器翻譯兩個版本的文章,讓使用者可以依其使用語言使用知識庫中的所有文章。但是,機器翻譯的文章可能不盡完美。這些文章中也可能出現拼字、語意或文法上的錯誤,就像外國人在使用本國語言時可能發生的錯誤。Microsoft 不為內容的翻譯錯誤或客戶對該內容的使用所產生的任何錯誤或損害負責。Microsoft也同時將不斷地就機器翻譯軟體進行更新。
按一下這裡查看此文章的英文版本:173011? (http://support.microsoft.com/kb/173011/en-us/ )
Microsoft及(或)其供應商不就任何在本伺服器上發表的文字資料及其相關圖表資訊的恰當性作任何承諾。所有文字資料及其相關圖表均以「現狀」供應,不負任何擔保責任。Microsoft及(或)其供應商謹此聲明,不負任何對與此資訊有關之擔保責任,包括關於適售性、適用於某一特定用途、權利或不侵權的明示或默示擔保責任。Microsoft及(或)其供應商無論如何不對因或與使用本伺服器上資訊或與資訊的實行有關而引起的契約、過失或其他侵權行為之訴訟中的特別的、間接的、衍生性的損害或任何因使用而喪失所導致的之損害、資料或利潤負任何責任。