Лучший способ сделать это - использовать WNetUseConnection, Win32 API, который обеспечивает наиболее прямой путь. По сути, вы пытаетесь позвонить
net use \\server password /user:myUserName
,
Это то, для чего предназначен этот API.
Хороший пример ответа дан на на этот вопрос .
Поскольку функция PinvokeWindowsNetworking
в случае успеха возвращает ноль, самый простой код аутентификации -
private static bool AuthenticateUserOnRemote(string server, string userName, string password)
{
var connected = PinvokeWindowsNetworking.connectToRemote(server, userName, password);
var disconnected = PinvokeWindowsNetworking.disconnectRemote(server);
return connected == null;
}