Member 13156238 Ответов: 2

Проблема, с которой сталкиваются во время работы .bat файл со службы Windows на C#


Я хочу запустить файл .bat, как только я получил конкретную почту, но теперь файл .bat не работает через службы windows.
Когда я обычно запускаю свою программу в Visual Studio, то файл .bat работает, но он не работает через службу Windows. Я обработал исключение, но оно также не дает мне исключения. Так что я не понимаю, в чем проблема.
Я попробовал другой способ, которым он работает в обычной программе, но не работает для службы windows.

Что я уже пробовал:

Попробуйте 1:
Система.Диагностика.Процесс.Старт(@"C:\Users\Pankaj-Да.Джоши\Документы Процесса-1\\UiPath.летучая мышь");


Попробуйте 2:
строковое имя файла = @"C:\Users\Pankaj-да.Joshi\Documents\UiPath\runbatfile.py";
Процесс p = новый процесс();
p.StartInfo = новый ProcessStartInfo(@"C:\Python36_64\python.exe", имя файла)
{
RedirectStandardOutput = true,
UseShellExecute = false,
CreateNoWindow = true
};
п. Начать();
выходная строка = стр. StandardOutput.ReadToEnd();
п. WaitForExit();

F-ES Sitecore

Прикрепите отладчик к службе, чтобы лучше понять, что происходит. Возможно, у него нет прав доступа к файлу py, или python.exe возможно, он делает что-то, что не работает в службе.

2 Ответов

Рейтинг:
5

Dave Kreskowiak

Это не сработает. Вы все сервисное приложение испорчено по дизайну.

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

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

Это приложение вообще не должно быть сервисом. Это должно быть приложение, которое запускается только тогда, когда вы вошли в систему и приложение работает от вашего имени. Вы можете решить первую проблему, преобразовав этот код обратно в обычное приложение и запустив его из ключа запуска в реестре.

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

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


Member 13156238

Спасибо Дейв Кресковяк,
Спасибо за ваш комментарий, он действительно полезен.
Поэтому мне нужно создать нормальную программу и ее обедать из ключа запуска в реестре.
Таким образом, я могу запустить свою программу (программа читает почту и запускает файл.bat) из этого. разве я не прав ????

Dave Kreskowiak

Да

Рейтинг:
2

Richard MacCutchan

Как я уже упоминал в вашем первоначальном вопросе на эту тему, я не думаю, что вы можете это сделать. Служба Windows не имеет консоли, поэтому она не может использовать stdin или stdout.