Вопрос

Я использую это Класс подражателя, чтобы выдать себя за счет домена, чтобы получить доступ к сетевой общей обмене, как SO:

using(new Impersonartor(username, domain, password))
{
//Code Here
}

Копирование файла из сетевого обмена работает нормально:

using(new Impersonartor(username, domain, password))
{
 CopyAll(uncPath, localPath)
}

Однако использование Process.Start для просмотра доли UNC в Explorer бросает «сбой входа в систему: неизвестное имя пользователя или плохой пароль»:

using(new Impersonartor(username, domain, password))
{
 Process.Start(uncPath)
}

Подозревая, что класс имитатора виноват, я попробовал вручную поставить учетные данные для ProcessTartinfo, как SO:

                        System.Diagnostics.ProcessStartInfo viewDir = new System.Diagnostics.ProcessStartInfo(uncPath);
                        viewDir.UseShellExecute = false;
                        viewDir.Domain = netCred.Domain;
                        viewDir.UserName = netCred.UserName;
                        viewDir.Password = ConvertToSecureString(netCred.Password);
                        System.Diagnostics.Process.Start(viewDir);

Все еще нет радости. Обратите внимание, что я уверен, что мой Netcred (NetworkCredential) верен, так как я привык устанавливать предварительные подключения к аутентифицированным ресурсам.

Итак, как мне просмотреть путь UNC в Explorer, используя сетевые учетные данные?

Это было полезно?

Решение

У меня была та же проблема сегодня, и вот что для меня сработало:

private void OpenNetworkPath(string uncPath)
{
   System.Diagnostics.Process.Start("explorer.exe", uncPath);
}

Другие советы

Вместо того, чтобы передавать UNCPath Process.Start, попробуйте начать "Explorer" в Process.Start и пройти UNCPath как ProcessStartInfoS. Arguments свойство.

System.Diagnostics.ProcessStartInfo viewDir = new System.Diagnostics.ProcessStartInfo("explorer.exe");
viewDir.UseShellExecute = false;
viewDir.Domain = netCred.Domain;
viewDir.UserName = netCred.UserName;
viewDir.Password = ConvertToSecureString(netCred.Password);
viewDir.Arguments = uncPath;
System.Diagnostics.Process.Start(viewDir);
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top