2017-07-17 3 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; 
関連する問題