C# System.Diagnostics.Process не работает должным образом - PullRequest
0 голосов
/ 16 января 2020

Я использую System.Diagnostics.Process в сервисном приложении Windows. Приложение, которое я называю, использует DropBox API и Google Drive API. Когда я вхожу в Google Drive или DropBox, он должен открывать веб-браузер и разрешать доступ к Drop или Drive, но он не открывается. Другие функции работают правильно (создайте папку на локальном компьютере, прочитайте файлы, запишите файлы журналов и т. Д. c).

Когда я дважды открываю это приложение вручную, процесс входа в систему работает правильно, отображается веб-браузер и Я могу разрешить доступ.

Нечто подобное происходит с другим приложением, использующим Saraff Twain. Если я открываю его вручную, он работает правильно, я могу сканировать и сохранять файлы (в этом процессе отображаются некоторые предупреждения или окно сообщений, например сообщения «сканирование», «нет бумаги», «нет сканера»), но когда windows служба вызывает его, сообщения не отображаются, оно сканирует и сохраняет файлы, но без сообщений.

Если я вызываю это приложение из другой windows формы или консольного приложения, приложения работают должным образом.

Надеюсь Не знаю, в чем проблема с сервисом Windows.

Спасибо за вашу помощь.

Вот код, который я использовал в сервисном приложении Windows (здесь он не работает) и Windows формирует приложение (здесь работает нормально). Я попытался вызвать CMD.exe и путь к приложению в качестве аргумента, и непосредственно путь к имени файла.

p.StartInfo.UseShellExecute = false;
p.StartInfo.WindowStyle = System.Diagnostics.ProcessWindowStyle.Hidden;
p.StartInfo.RedirectStandardOutput = true;
p.StartInfo.FileName = "cmd.exe";
p.StartInfo.Arguments = "/C" + " \"" + execName+"\" " + argument;
//p.StartInfo.Verb = "runas";
// writeLogLine(argument + " " + execName);
p.Start();
output = p.StandardOutput.ReadToEnd();
p.WaitForExit();
writeLogLine("out" + output);

1 Ответ

0 голосов
/ 23 апреля 2020

A Windows Служба не предназначена для взаимодействия с пользователем, поскольку она должна работать без входа в систему каких-либо пользователей.

Windows Службы изолированы от рабочих столов пользователей в качестве меры безопасности. почему любое взаимодействие с рабочим столом обязательно завершится неудачей.

Либо замените службу Windows обычным приложением для настольного компьютера, либо измените службу Windows таким образом, чтобы ей не требовался доступ к рабочему столу.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...