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

Есть ли способ отследить, что происходит в списке сервисов? Например, какая-нибудь программа, которая будет делать снимок списка сервисов через равные промежутки времени и показывать, что было недавно изменено? Таким образом, если что-то сломается в моей системе, я знаю, где искать.

Есть идеи, если что-то подобное существует?

(Конкретно это для Windows 10)

2 ответа2

0

В итоге я создал небольшой PHP-скрипт под Bash для Windows, чтобы сделать эту работу. Он вызывает wmic чтобы получить список сервисов, а затем сохраняет его в текстовом файле с версией, используя git. Это называется один раз в день в хрон.

Затем я могу использовать что-то вроде tig чтобы просмотреть изменения с течением времени.

Вот сценарий, если кто-то заинтересован в том, чтобы сделать что-то подобное (это немного глупо, но работает):

<?php

$wmicPath = '/mnt/c/Windows/System32/wbem/WMIC.exe';

$logDir = $_SERVER['HOME'] . '/var/log/win_services_mon';
@mkdir($logDir, 0755, true);
chdir($logDir);

$logFile = $logDir . '/services.log';

if (!file_exists($logDir . '/.git')) {
    exec('git init');
}

exec($wmicPath . ' service get name,caption,startmode > ' . $logFile);
$content = file_get_contents($logFile);
if (strpos($content, 'ÿþ') === 0) {
    $content = substr($content, 2); // Remove BOM
}
$content = str_replace("\0", '', $content); // Convert two bytes per character to one (definitely the wrong way to do this, but can't get iconv to work)
file_put_contents($logFile, $content);

exec('git add .');
exec('git commit -m "' . date('Ymd-His') . '"');
0

Хороший, но слишком сложный с точки зрения требований.

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

Просто запустите wmic service get name,caption,startmode с выходным параметром в качестве имени файла +currentdate/time. (т.е. >> out20170509.log, вывод на следующий день в out20170510.log).

Это создаст файлы.

Затем вы можете запланировать другой файл bat с помощью FC (сравнение файлов между файлами), который сам может выводить в cmd (с паузой или задержкой) или в другой текстовый файл, который вы можете проверить позже.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .