首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> Delphi

Delphi 實現網路磁碟機映射:WNetAddConnection2W API 應用指南

     編輯:Delphi

函數原型

function WNetAddConnection2W(
  var lpNetResource: TNetResourceW;
  lpPassword: PWideChar;
  lpUserName: PWideChar;
  dwFlags: DWORD
): DWORD; stdcall;

參數說明

參數說明
lpNetResource指向 TNetResourceW 結構,指定資源類型、本地磁碟機代號、遠端 UNC 路徑、提供者名稱。
lpPassword連線密碼(寬字串)。
lpUserName使用者名稱(寬字串)。
dwFlagsCONNECT_UPDATE_PROFILE 表示登入時自動還原映射;CONNECT_TEMPORARY 不更新設定檔。

完整範例

var
  NRW: TNetResourceW;
begin
  FillChar(NRW, SizeOf(NRW), 0);
  with NRW do begin
    dwType       := RESOURCETYPE_DISK;        // 磁碟資源
    lpLocalName  := 'X:';                     // 對應本地磁碟機代號
    lpRemoteName := '\\MyServer\MyShare';     // UNC 路徑
    lpProvider   := '';                       // 空值由系統自動選擇提供者
  end;

  // 以明文密碼/帳號連線,並寫入使用者設定檔(下次登入自動還原)
  if WNetAddConnection2W(NRW, 'MyPassword', 'MyUserName', CONNECT_UPDATE_PROFILE) <> NO_ERROR then
    ShowMessage('映射失敗,請檢查網路路徑與憑證。');
end;

常見錯誤代碼

  • ERROR_BAD_NETPATH (53):UNC 路徑錯誤或主機不可達。
  • ERROR_LOGON_FAILURE (1326):帳號密碼錯誤。
  • ERROR_ALREADY_ASSIGNED (85):磁碟機代號已被使用。
  • ERROR_SESSION_CREDENTIAL_CONFLICT (1219):同一使用者對同一伺服器已有不同憑證的連線,需先斷開。

斷開映射

WNetCancelConnection2('X:', CONNECT_UPDATE_PROFILE, True); // True = 強制斷開

最佳實踐建議

  1. 優先使用寬字串版本(W 尾綴)支援 Unicode 路徑。
  2. 生產環境避免硬編碼密碼,改用 Windows 儲存憑證(CredRead/CredWrite)或 Kerberos 整合驗證。
  3. 錯誤處理務必檢查回傳值,必要時呼叫 GetLastError 取得詳細代碼。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved