как выполнить процесс, когда система начинает использовать сервис c# - PullRequest
0 голосов
/ 27 апреля 2020

У меня есть служба c#, мне нужно выполнить определенный процесс во время запуска устройства. Как я могу сделать это, используя c#. Я не знаю, как определить, что windows запускается.

 System.Diagnostics.Process proc = new Process();
                            proc.StartInfo.FileName = fileName;
                            proc.StartInfo.Arguments = details["arguments"];
                            proc.StartInfo.Verb = "runas";      
                            proc.Start();
                            proc.WaitForExit();

Ответы [ 2 ]

1 голос
/ 27 апреля 2020

Вы можете установить службу Automati c в окне Службы и при запуске выполнить свой код или запустить таймер для запуска вскоре после.

1 голос
/ 27 апреля 2020

Один из способов определения windows запуска (или только что запущенного) - использовать System.Envinroment.TickCount , который возвращает количество миллисекунд с момента запуска системы. Вам нужно установить переменную, чтобы указать, что вы прочитали и действовали по этому поводу, поскольку примерно через месяц она снова возвращается к нулю, поскольку у нее заканчивается свободное место для хранения такого большого числа. (РЕДАКТИРОВАТЬ - как указано, оно подписано и становится отрицательным)

int result = Environment.TickCount 

, если результат меньше, чем, скажем, 300 000, то windows перезапустился за последние 5 минут. Очевидно, вам нужно спланировать, чтобы не все компьютеры быстро перезагружались.

EDIT Теперь мы знаем, что проблема заключается в том, что onStart не вызывается ... на основании комментария выше ... 1) OP Вы уверены, что устройство фактически выключается, а не просто спит / находится в спящем режиме 2) Вы проверили windows журналы событий, чтобы доказать, что служба действительно остановилась и запустилась?

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