Я хочу открыть explorer.exe в общей сетевой папке UN C, используя определенную учетную запись домена c. Код ниже, похоже, работает, но на экране не отображается окно проводника:
var psi = new ProcessStartInfo()
{
FileName = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.Windows), "explorer.exe"),
WorkingDirectory = Environment.GetFolderPath(Environment.SpecialFolder.Windows),
Arguments = $@"/e,/root,{m_svrShare}",
UseShellExecute = false,
RedirectStandardError = true,
RedirectStandardOutput = true,
UserName = userName,
Password = securePassword,
Domain = domain,
};
using var p = Process.Start(psi);
while (!p.HasExited) { Thread.Sleep(1000); }
Debug.WriteLine($"Explorer process exited. Error: {p.StandardError.ReadToEnd()} Output: {p.StandardOutput.Read()}");
Когда я указываю свою учетную запись / пароль в psi
над окном проводника, равно отображается. Итак, теоретически мой код работает, но не тогда, когда я использую другие учетные данные. (И да, другая учетная запись имеет доступ к этому же общему ресурсу.) В обоих случаях StandardError
и StandardOutput
отображают одно и то же (string.Empty
и -1 соответственно). Что-то мне не хватает или это какая-то странная проблема с разрешениями GUI?
ОБНОВЛЕНИЕ: Я думаю, что эта проблема может быть вызвана попыткой сопоставления с сервером из нескольких учетных записей на тот же компьютер, который Windows не поддерживает. К сожалению, никаких ошибок не возникает, и в других испытаниях я получал вводящее в заблуждение сообщение об ошибке (ошибка 86 - неверный пароль).