Доступ к общему сетевому ресурсу через Process.Start (путь) с использованием сетевых учетных данных - PullRequest
2 голосов
/ 09 ноября 2010

Я использую этот класс Impersonator для олицетворения учетной записи домена для доступа к сетевому ресурсу следующим образом:

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)
}

Подозревает, что класс Impersonator виноватЯ попытался вручную ввести учетные данные для ProcessStartInfo, например:

                        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 в проводнике с использованием сетевых учетных данных?

Ответы [ 2 ]

3 голосов
/ 02 марта 2011

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

private void OpenNetworkPath(string uncPath)
{
   System.Diagnostics.Process.Start("explorer.exe", uncPath);
}
0 голосов
/ 09 ноября 2010

Вместо передачи uncPath в Process.Start, попробуйте запустить "explorer" в Process.Start и передать uncPath как ProcessStartInfo 's 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);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...