Запуск explorer.exe с использованием других учетных данных приводит к тому, что окно не отображается - PullRequest
0 голосов
/ 17 июня 2020

Я хочу открыть 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 - неверный пароль).

...