Я пытаюсь определить, управляет ли WSUS текущим компьютером с помощью API агента обновления Windows. В настоящее время мой код просматривает все службы, зарегистрированные в агенте обновления Windows.
private static bool IsManagedByWSUS(WUApiNativeMethods.IUpdateSession3 session)
{
WUApiNativeMethods.IUpdateServiceManager serviceManager = session.CreateUpdateServiceManager();
WUApiNativeMethods.IUpdateServiceCollection services = serviceManager.Services;
foreach (WUApiNativeMethods.IUpdateService service in services)
{
// Indicates whether the service is registered with automatic updates
var registeredWithAu = service.IsRegisteredWithAU();
// Indicates whether the service is a managed service
var isManaged = service.IsManaged();
var name = service.Name().ToLower();
if (registeredWithAu &&
isManaged &&
name.Contains("windows server update service"))
{
return true;
}
}
return false;
}
Проблема в том, что я не знаю, надежна ли проверка имени. Я вижу, что в объекте IUpdateService есть поле идентификатора службы, которое является идентификатором. Протестировал пару коробок, вроде всегда 3da21691-e39d-4da6-8a4b-b43877bcb1b7.
Как я могу надежно проверить наличие WSUS?