Відповіді:
Хоча в журналах подій чи аудиту немає сліду видалення служби , ви можете створити невеликий додаток консолі, який визначає, чи існує служба, і додає це додаток до Windows Task Scheduler
такого, що його планується виконати на основі частоти або тригера, який ви Ви можете налаштувати під Ваші вимоги , щоб Ви отримали сповіщення, якщо послугу додано чи видалено тощо.
Консольний додаток розроблений таким чином, що при першому запуску він реєструє всі сервіси в системі, а на наступних запусках він буде відслідковувати зміни, внесені в сервіси через,
servicesRemoved
іservicesAdded
завдяки цьому ми можемо вирішити, що робити, коли послуга має було змінено
Додаток консолі: ServiceDetector.exe
static void Main(string[] args)
{
var path = @"C:\AdminLocation\ServicesLog.txt";
var currentServiceCollection = ServiceController.GetServices().Select(s => s.ServiceName).ToList(); //Queries the most current Services from the machine
if (!File.Exists(path)) //Creates a Log file with current services if not present, usually means the first run
{
// Assumption made is that this is the first run
using (var text = File.AppendText(path))
{
currentServiceCollection.ForEach((s) => text.WriteLine(s));
}
return;
}
// Fetches the recorded services from the Log
var existingServiceCollection = File.ReadAllLines(path).ToList();
var servicesRemoved = existingServiceCollection.Except(currentServiceCollection).ToList();
var servicesAdded = currentServiceCollection.Except(existingServiceCollection).ToList();
if (!servicesAdded.Any() && !servicesRemoved.Any())
{ Console.WriteLine("No services have been added or removed"); return; }
//If any services has been added
if (servicesAdded.Any())
{
Console.WriteLine("One or more services has been added");
using (var text = File.AppendText(path))
{
servicesAdded.ForEach((s) => text.WriteLine(s));
}
return;
}
//Service(s) may have been deleted, you can choose to record it or not based on your requirements
Console.WriteLine("One or more services has been removed");
}
Завдання планування
Windows Start> Планувальник завдань> Створити основне завдання> Встановити тригер> Приєднати EXE> Готово
Ви праві, що видалення служби Windows викликає додавання події до системного журналу подій (джерело: /superuser/1238311/how-can-we-detect-if-a-windows- service-is-delete-is-there-an-event-log-id-for-i ).
AFAIK не існує аудиторської політики щодо аудиту видалення послуги, і я думаю, якби вона була, я думаю, що вона буде вказана тут: https://docs.microsoft.com/en-us/windows/security/threat-protection/auditing/ базовий аудит-відстеження процесу
Я припускаю, що опитування не ServiceController.GetServices()
викликає сумнівів, оскільки ваша програма може не працювати під час видалення послуги?
Існує маса способів побудови інструментарію, поки ви не дізнаєтесь, що являє собою хороший інструментарій. Моя робота по суті взята безпосередньо із запису Вікіпедії https://en.wikipedia.org/wiki/Інструментація .
Інструкція щодо інструментарію
http://www.powersemantics.com/e.html
Вирішення проблеми вимірювальних показників існує, але ви зациклювались на тому, щоб зрозуміти, як також мати "приштовхувальний" приладовий сигнал іншої системи. Як пояснюється в моїй статті E, інструменти завжди повинні витягувати дані, ніколи їх не натискати. Сигналізація, керована подіями, - це потенційна точка відмови, яка вам не потрібна.
Щоб усунути будь-яку нерішучість або сумніви, які можуть виникнути у створенні окремого додатку, монітори зазвичай не залежать ( не інтегровані) як каже Вікіпедія). Тобто, мовляв, що ваш монітор "може не працювати" означає, що ви не вирішили створити справжній неінтегрований монітор, який завжди працює. Ваша споживча система неправильно моделює прилади, тому що вона інтегрує перевірку у свій власний процес.
Розділіть ці обов'язки і продовжуйте. Вирішіть, як часто інструмент повинен обґрунтовано запитувати на видалені служби та запитувати дані таймером. Якщо ви використовуєте запропонований виклик API simon-pearson, ви також можете визначити, коли служби додані. Звичайно, монітору потрібно локально кешувати копію списку послуг, щоб індикатори могли зробити висновок про те, що додано чи видалено.