Windows API Clear Authentication Tokens
I'm using the WNetEnumResource to enumerate all network share connections and WNetCancelConnection2 to close them. Then I am using WNetUseConnection to connect to a share using discrete credentials. This process happens multiple times throughout the day.
The problem that I'm running into is that after the first flow through the process I'm getting:
System Error 1219 has occur开发者_JAVA技巧red.
Multiple connections to a server or shared resource by the same user, using more than one user name, are not allowed. Disconnect all previous connections to the server or shared resource and try again.
This happens even when the enumeration says there are no current connections.
My question is: why? Why am I getting this error? Is the authenticated connection to the server still cached? Can I enumerate these authentication tokens? Kerberos? LSA?
I haven't been able to find the smallest foothold of information to progress forward on this project. Any help is appreciated!
I'm trying to remember the solution we used when we came across this problem for a network backup program a few years ago.
I'm certain the solution involves using either WNetAddConnection2
or WNetAddConnection3
instead of WNetUseConnection
. I think that passing the flag CONNECT_CRED_RESET
should take care of this, but I'm not absolutely certain.
Note that CONNECT_CRED_RESET
is only documented for WNetAddConnection2
and not WNetAddConnection3
, though MSDN says the only difference between the two is the hWnd
parameter for owner of dialog windows - I'd try with WNetAddConnection2
and only if it works, experiment with WNetAddConnection3
. You may even get it to work with WNetUseConnection
!
Make sure to note the dependencies CONNECT_CRED_RESET
has on other flags.
精彩评论