private static Boolean Connect2share(string share, string username, string password, uint retry, Boolean DISconnect)
{
if (DISconnect)
{
m_logger.DebugFormat("Disconnect from {0}", share);
if (!Abstractions.WindowsApi.pInvokes.DisconnectNetworkDrive(share))
{
m_logger.WarnFormat("unable to disconnect from {0}", share);
}
return true;
}
else
{
string[] server = SMBserver(share, false);
if (String.IsNullOrEmpty(server[0]))
{
m_logger.ErrorFormat("Can't extract SMB server from {0}", share);
return false;
}
server[0] += "\\" + username;
for (int x = 1; x <= retry; x++)
{
try
{
m_logger.DebugFormat("{0}. try to connect to {1} as {2}", x, share, server[0]);
if (!Abstractions.WindowsApi.pInvokes.MapNetworkDrive(share, server[0], password))
{
m_logger.ErrorFormat("Failed to connect to share {0}", share);
}
if (Directory.Exists(share))
{
return true;
}
Thread.Sleep(new TimeSpan(0, 0, 30));
}
catch (Exception ex)
{
m_logger.Error(ex.Message);
}
}
return false;
}
}