2011-07-13 303 views
7

我正在使用WNetEnumResource來枚舉所有網絡共享連接,並使用WNetCancelConnection2來關閉它們。然後,我使用WNetUseConnection使用獨立憑證連接到共享。這一過程全天發生多次。Windows API清除身份驗證令牌

,我快到的問題是,通過我得到的過程中第一流後:發生

系統錯誤1219。

不允許同一用戶使用多個連接到服務器或共享資源, 使用多個用戶名。斷開所有連接到服務器或共享資源的所有 ,然後重試。

即使枚舉表示沒有當前連接,也會發生這種情況。

我的問題是:爲什麼?爲什麼我得到這個錯誤?與服務器的認證連接是否仍然被緩存?我可以枚舉這些身份驗證令牌嗎? Kerberos的? LSA?

我還沒有找到最小的信息立足點來推進這個項目。任何幫助表示讚賞!

+0

你知道如何解決這個問題嗎?我發現在查看指定目錄時,需要將「升級」爲有效用戶的匿名samba連接出現類似問題。 – AngerClown

+0

哦,天哪,我們在幾年前面對過這個......有*是一個解決方案。 –

回答

2

我想記住我們在幾年前遇到網絡備份程序的這個問題時使用的解決方案。

我確定解決方案涉及使用WNetAddConnection2WNetAddConnection3而不是WNetUseConnection。我認爲通過國旗CONNECT_CRED_RESET應該照顧這一點,但我並不完全確定。

注意CONNECT_CRED_RESET只記載爲WNetAddConnection2,而不是WNetAddConnection3,雖然MSDN說,兩者之間的唯一區別是對話框窗口的所有者hWnd參數 - 我與WNetAddConnection2嘗試且僅當它的工作原理,實驗WNetAddConnection3 。你甚至可以讓它與WNetUseConnection一起工作!

請確保note the dependenciesCONNECT_CRED_RESET在其他旗幟上。

+0

謝謝!我會試一試並回來。 – joshperry

+0

不幸的是,這並不適用於我,這些標誌是用於命令行應用程序,實際上是要求用戶輸入。我試圖完成桌面用戶的GUI應用程序,因此不會與CLI進行交互。 – joshperry

+1

@joshperry我打算先嚐試重置連接,然後用'CONNECT_CRED_RESET'重新建立連接,然後一旦信用消失就建立連接。 –