2009-10-22 55 views
1

我有一個.NET客戶端應用程序,它間歇性地失去了連接到UNC共享,其中用戶在域中或者服務器上具有相同憑據的本地帳戶。 SO和Google都有很多使用LogonUser和WNetAddConnection的示例,但都需要用戶的密碼。我們所有的應用程序都需要明確地打開與UNC的連接,複製文件並明確關閉連接而不提供憑據 - 換句話說,使用當前的憑證。任何人都可以指出我在正確的方向如何在C#中做到這一點?打開/關閉連接到沒有憑據的UNC

回答

1

根據WNetAddConnection2函數的文檔,您可以傳遞Null作爲用戶名以使用當前進程的用戶上下文。我假設這意味着它將使用運行您的客戶端應用程序的帳戶的安全上下文。 MSDN也說爲了使用與指定的任何用戶名關聯的密碼,傳入Null作爲密碼。

也許將兩者都設爲Null將會神奇地工作。

+0

謝謝你的回答,克里斯。我發現部分文檔,並在發佈之前實際嘗試過。它似乎工作,因爲傳遞null時沒有發生錯誤,但我很難在調用WNetCancelConnection2之後證明連接已關閉。有什麼我應該找的服務器上? – flipdoubt 2009-10-27 13:30:18

+0

在服務器上,唯一想到的是進入計算機管理並進入系統工具 - >共享文件夾 - >打開會話,看看是否有證據表明客戶端連接到給定的共享。如果服務器運行的是Windows 2008,則可以啓動「共享和存儲管理」管理單元以查看相同的信息。我假設會在文件複製過程中爲給定用戶顯示一個會話,然後在調用WNetCancelConnection2之後不久消失。我總是將該函數的最後一個參數設置爲1來強制斷開連接。 – 2009-10-27 16:47:34