2017-07-17 2 views
3

Ich habe eine Anwendung, die manchmal auf Fileshare im lokalen Netzwerk zugreifen. In diesem Fall wird der Pfad in fEBookPath gespeichert. Wenn Benutzer Login und Passwort eingegeben hat, bevor alles in Ordnung ist. Aber wenn FindFirst nicht 0 zurückgibt. In diesem Fall möchte ich den gleichen Sicherheitsdialog anzeigen, den Windows Explorer anzeigt. Gefällt Ihnen diesesWie Anzeige Windows Sicherheitsdialog

enter image description here

Mein vereinfachten Code

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, die die Verbindung auffordert und einrichtet. –

+1

Sie stellen eine Verbindung zu einer Netzwerkressource her und zeigen kein Dialogfeld an. Der Ergebnistyp ist "DWORD". Wahrscheinlich möchten Sie keine Verbindung zu einem Drucker herstellen, sondern nur eine Festplatte. Und diese leeren Saiten können Sie einfach 'nil'. – Victoria

+0

Ok vielen Dank für die Hinweise –

Antwort

2

sollte dieser Code tun, was ich will

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; 
Verwandte Themen