driveLetter = driveLetter.ToUpper();
if (driveLetter.Length == 1)
driveLetter = driveLetter + ":";
msg1 = "Disconnect drive letter (" + driveLetter + ") if connected or not.";
uint dwResult = WNetCancelConnection2(driveLetter, CONNECT_UPDATE_PROFILE, true); // same as NET USE <drive-letter>: /DELETE
obj.WriteEntry("WNetCancelConnection2 status code:");
DisplayErrorMessage(dwResult, obj);
if (dwResult != 0)
{
obj.WriteEntry("Getting rid of pre-existing mapping of network drive produced an error.");
obj.WriteEntry("Let's see if establishing a working mapping also produces an error.");
}
NETRESOURCE networkResource = new NETRESOURCE();
networkResource.dwType = RESOURCETYPE_DISK;
networkResource.lpLocalName = driveLetter;
networkResource.lpRemoteName = path;
networkResource.lpProvider = null;
dwResult = WNetAddConnection2(ref networkResource, passwd, userid, 0); // same as NET USE <drive-letter>: \\<remote-computer>\<directory-name>
obj.WriteEntry("WNetAddConnection2 status code:");
DisplayErrorMessage(dwResult, obj);
if (dwResult != 0)
return false; // damn thing failed
return true;
Seems to me that it would be good design to avoid issuing error 2250 on the Cancel when the Add will work just fine.