Windows API清除身份验证令牌

jos*_*rry 7 windows authentication networking winapi

我正在使用WNetEnumResource来枚举所有网络共享连接,使用WNetCancelConnection2来关闭它们.然后我使用WNetUseConnection使用离散凭证连接到共享.这个过程全天多次发生.

我遇到的问题是,在第一次流程完成后我得到了:

发生系统错误1219.

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

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

我的问题是:为什么?为什么我收到此错误?与服务器的经过身份验证的连接是否仍然缓存?我可以枚举这些身份验证令牌吗?Kerberos的?LSA?

我未能找到最小的信息立足点来推进该项目.任何帮助表示赞赏!

Mah*_*dsi 2

我试图记住几年前我们在网络备份程序中遇到这个问题时所使用的解决方案。

我确信解决方案涉及使用WNetAddConnection2WNetAddConnection3代替WNetUseConnection. 我认为传递旗帜CONNECT_CRED_RESET应该可以解决这个问题,但我并不确定。

请注意,CONNECT_CRED_RESET仅记录了WNetAddConnection2和 不记录WNetAddConnection3,尽管 MSDN 说两者之间的唯一区别是hWnd对话框窗口所有者的参数 - 我会尝试使用WNetAddConnection2并且只有当它有效时,才尝试使用WNetAddConnection3。您甚至可以使用它WNetUseConnection

请务必注意对其他标志的依赖关系。 CONNECT_CRED_RESET