Existe uma maneira de detectar quando um serviço do Windows foi excluído? Eu verifiquei o log de eventos, mas ele não pegar ações excluído somente adicionados.
Eu acredito que pode haver uma maneira de usar os logs de auditoria mas não estou certo de como fazer isso?
Qualquer ajuda é muito apreciada.
obrigado
Enquanto não há nenhum traço de eliminação serviço em eventos ou auditoria registros, o que você pode fazer é criar um pequeno aplicativo console que detecta se existe um serviço e anexar este aplicativo para Windows Task Scheduler
tal que está programado para executar com base na freqüência ou um gatilho que você pode personalizar a suas exigências de tal forma que você receberá um alerta se um serviço foi adicionado ou removido etc ..
O console app é projetado de tal forma que na primeira execução, ele registra todos os serviços no sistema e nas pistas subsequentes será o rastreamento de alterações feitas nos serviços via
servicesRemoved
eservicesAdded
, com isso, podemos decidir que ação tomar quando um serviço tem foi modificado
Console App: 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");
}
agendamento de tarefas
O Windows Iniciar> Agendador de Tarefas> Criar Básico Tarefa> Set Gatilho> Junte a sua exe> Finish