2017-07-17 327 views
3

我有一個應用程序有時會訪問本地網絡中的文件共享。 在這種情況下,路徑存儲在fEBookPath中。 如果用戶輸入登錄名和密碼,那麼以前一切都很好。但是,如果不FindFirst不返回0.在這種情況下,我想顯示Windows資源管理器顯示相同的安全對話框。 像這樣如何顯示Windows安全對話框

enter image description here

我的簡化代碼

if FindFirst(fEBookPath + '*.*', faDirectory, vSearchRecFolder) = 0 then 
begin 
    // Existing code to access fEBookPath 
end 
else 
    // Display Windows security dialog to enter login + password 
+4

[WNetAddConnection2(https://msdn.microsoft.com/en -us/library/windows/desktop/aa385413(v = vs.85).aspx)+ CONNECT_PROMPT將提示並設置連接。 –

+1

您正在連接到網絡資源,而不是顯示對話框。結果類型是'DWORD',你可能不想連接到打印機,但是磁盤。而那些空的字符串,你可以簡單地'空'。 – Victoria

+0

好的,謝謝你的建議 –

回答

2

此代碼應該做我想做的

function TLogonForm.ShowSecurity: DWORD; 
var 
    UNCPath,UserName,PassWord: string; 
    NwR : TNetResource; 
begin 
    UNCPath := '\\xenapp06'; 
    NwR.lpLocalName:= ''; 
    NwR.lpProvider := ''; 
    NwR.dwType  := RESOURCETYPE_DISK; 
    NwR.lpRemoteName:= PChar(UNCPath); 
    Result := WNetAddConnection2(NwR, nil, nil, CONNECT_INTERACTIVE or CONNECT_PROMPT); 
end;