Для аутентификации с помощью общего ресурса, на который у пользователя, выполняющего процесс, нет прав (что часто имеет место для административных общих ресурсов), попробуйте выполнить команду net use:
net use SERVERNAME\IPC$ /user:USERNAME PASSWORD
Попробуйте запустить это в отдельном процессе перед кодом, который фактически пытается получить доступ к общему ресурсу, например ::
ProcessStartInfo psi = new ProcessStartInfo(
"net", "use " + SERVERNAME + @"\IPC$ /user:" + USERNAME + " " + PASSWORD);
Process p = new Process();
p.StartInfo = psi;
p.Start();
p.WaitForExit();
p.Close();
// The code to access the share follows...
Это полезно, если нецелесообразно давать разрешение на общий ресурс для учетной записи пользователя, выполняющего процесс, например, для модели безопасности, где приложению конечного пользователя требуется доступ к данным в общей папке, к которой сам пользователь не должен иметь прямого доступа.