我正在使用此功能來映射網路驅動器:
CONST
MapNetDrvDefFlags = CONNECT_TEMPORARY OR CONNECT_INTERACTIVE {$IFDEF CONSOLE } OR CONNECT_COMMANDLINE {$ENDIF };
FUNCTION MapNetworkDrive(D : CHAR ; CONST UNC,UserName,Password,Provider : STRING ; Flags : DWORD = MapNetDrvDefFlags) : DWORD;
VAR
NetResource : _NETRESOURCEW;
LocalRes : STRING;
BEGIN
FillChar(NetResource,SizeOf(_NETRESOURCEW),0);
NetResource.dwType:=RESOURCETYPE_DISK;
LocalRes:=D ':'; NetResource.lpLocalName:=POINTER(LocalRes);
NetResource.lpRemoteName:=POINTER(UNC);
NetResource.lpProvider:=POINTER(Provider);
Result:=WNetAddConnection2W(NetResource,POINTER(Password),POINTER(UserName),Flags)
END;
它在標準的 SAMBA WORKGROUP 網路上運行良好。但在客戶處則不然。它確實映射了驅動器,但是當我嘗試訪問它時,出現“用戶或密碼無效”錯誤。
我注意到的一個區別是,如果我執行手冊
NET USE <Drive>: <UNC>
在我自己的網路 (WORKGROUP) 上,我收到了一個簡單的用戶名提示。但是在客戶的網路上,我得到了不同的提示:
Skriv brugernavnet for 'xxxx.yyyy':
(翻譯:輸入'xxxx.yyyy'的用戶名)
我假設這是一個域名,但如何將其提供給 WNetAddConnection2W 呼叫?我嘗試將用戶名發送為“xxxx.yyyy@user”,但這不起作用。是否還有其他地方我需要提供域名(如果確實如此,它是什么)?
我還嘗試將 xxxx.yyyy 部分指定為 _NETRESOURCEW 結構中的“提供者”,但如果這樣做,我會收到“無效提供者”錯誤。
uj5u.com熱心網友回復:
這是一個非常相似的問題的答案:https : //stackoverflow.com/a/29420529/759049
從本質上講,我認為您應該只使用域名,lpRemoteName然后就可以了。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/314752.html
