Windows API清除身份validation令牌

我正在使用WNetEnumResource枚举所有networking共享连接和WNetCancelConnection2closures它们。 然后我使用WNetUseConnection连接到使用分立凭据的共享。 这个过程全天发生多次。

我遇到的问题是,在我得到第一个stream程之后:

发生系统错误1219。

不允许同一用户使用多个用户名连接到服务器或共享资源。 断开与服务器或共享资源的所有连接,然后重试。

即使枚举表示没有当前连接,也会发生这种情况。

我的问题是:为什么? 为什么我得到这个错误? 与服务器的authentication连接是否仍然被caching? 我可以枚举这些身份validation令牌吗? Kerberos的? LSA?

在这个项目上,我一直没能find最小的信息立足点。 任何帮助表示赞赏!

我试图记住我们几年前遇到网络备份程序时遇到的这个问题。

我确定解决方案涉及使用WNetAddConnection2WNetAddConnection3而不是WNetUseConnection 。 我认为通过标志CONNECT_CRED_RESET应该照顾这一点,但我不是绝对肯定的。

请注意, CONNECT_CRED_RESET只记录了WNetAddConnection2而不是WNetAddConnection3 ,虽然MSDN表示两者之间的唯一区别是对话窗口的拥有者的hWnd参数 – 我会尝试与WNetAddConnection2 ,只有它的工作, WNetAddConnection3实验。 你甚至可以让它与WNetUseConnection一起工作!

确保注意到 CONNECT_CRED_RESET在其他标志上的依赖关系 。