Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

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 occurred.

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!

like image 358
joshperry Avatar asked Jul 13 '11 01:07

joshperry


1 Answers

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.

like image 179
Mahmoud Al-Qudsi Avatar answered Sep 26 '22 17:09

Mahmoud Al-Qudsi