После некоторых обновлений перестал запускаться Windows Admin Center со следующими ошибками.
Версия установки: WindowsAdminCenter2311.msi
Имя сбойного приложения: SmeDesktop.exe, версия: 1.5.2407.23001, метка времени: 0x9a70c5cc
Имя сбойного модуля: KERNELBASE.dll, версия: 10.0.19041.3930, метка времени: 0x9141f979
Код исключения: 0xe0434352
Смещение ошибки: 0x000000000002cf19
Идентификатор сбойного процесса: 0x2bc8
Время запуска сбойного приложения: 0x01db1b1ec9639ed1
Путь сбойного приложения: C:\Program Files\Windows Admin Center\SmeDesktop.exe
Путь сбойного модуля: C:\WINDOWS\System32\KERNELBASE.dll
Идентификатор отчета: 21ee1ef3-fd4b-41c2-bd35-be3c515203a9
Полное имя сбойного пакета:
Код приложения, связанного со сбойным пакетом:
Приложение: SmeDesktop.exe
Версия платформы: v4.0.30319
Описание. Процесс был завершен из-за необработанного исключения.
Сведения об исключении: Microsoft.ManagementExperience.PackageManagement.ExtensionSignatureException
в Microsoft.ManagementExperience.PackageManagement.SignatureValidationPolicy.ApplyTo(Microsoft.ManagementExperience.Common.ValidationResult)
в Microsoft.ManagementExperience.FrontEnd.Startup.Start(Microsoft.ManagementExperience.Common.Gateway.GatewayMode)
в Microsoft.ManagementExperience.Desktop.Program.Launch(Boolean)
в Microsoft.ManagementExperience.Desktop.Program.Main(System.String[])
Причиной этого стал отозванный корневой сертификат: Microsoft Root Certificate Authority
Серийный номер: 79ad16a14aa0a5ad4c7358f407132e65
Удалите данный сертификат.
Как часто бывает, надо решить по-быстрому небольшую проблемку, но на пути попадаешь в некий адский круг и маленькая проблемка затягивает тебя в решение других проблем.
В данном случае так и произошло и где ожидалось решить за пол часика, пришлось потратить более полу дня.
Сам путь поиска проблемы был долгий и тернистый и лезть в код это было уже последней надеждой.
Ошибка была в модуле: Microsoft.ManagementExperience.PackageManagement.dll
Я не поленился и декопилировал модуль, чтоб понять, что происходит. Код, в котором происходило не обработанное исключение
public class SignatureValidationPolicy
{
public bool IsDevMode { get; }
public bool IsDebugBuild { get; }
public bool ShouldValidate { get; }
public SignatureValidationPolicy(bool developerMode, bool debugBuild)
{
IsDevMode = developerMode;
IsDebugBuild = debugBuild;
ShouldValidate = !developerMode && !debugBuild;
}
public void ApplyTo(ValidationResult validationResult)
{
if (validationResult.IsValid)
{
return;
}
if (ShouldValidate)
{
throw new ExtensionSignatureException("Error(s) validating platform integrity.", validationResult.InvalidFiles.Select((FileInfo f) => f.FullName));
}
foreach (FileInfo invalidFile in validationResult.InvalidFiles) ////-> в этом месте
{
Trace.TraceWarning(FormattableString.Invariant($"Unsigned file identified: {invalidFile.FullName}. When run in Production Mode, this will cause the gateway to not run."));
}
}
}
Далее я подключался дебагером, смотрел, ломал, пытался ....
В итоге получилось выдернуть список файлов, что не нравилось системе:
Недопустимые файлы:
C:\Program Files\Windows Admin Center\Microsoft.AspNet.SignalR.Core.dll
C:\Program Files\Windows Admin Center\Microsoft.IdentityModel.Protocols.OpenIdConnect.dll
C:\Program Files\Windows Admin Center\NuGet.Core.dll
C:\Program Files\Windows Admin Center\System.Net.Http.dll
C:\Program Files\Windows Admin Center\System.Net.Http.Formatting.dll
C:\Program Files\Windows Admin Center\System.Numerics.Vectors.dll
C:\Program Files\Windows Admin Center\System.Runtime.InteropServices.RuntimeInformation.dll
C:\Program Files\Windows Admin Center\System.Security.Cryptography.Algorithms.dll
C:\Program Files\Windows Admin Center\System.Security.Cryptography.Encoding.dll
C:\Program Files\Windows Admin Center\System.Security.Cryptography.Primitives.dll
C:\Program Files\Windows Admin Center\System.Security.Cryptography.X509Certificates.dll
C:\Program Files\Windows Admin Center\System.ValueTuple.dll
C:\Program Files\Windows Admin Center\System.Web.Cors.dll
C:\Program Files\Windows Admin Center\System.Web.Http.Cors.dll
C:\Program Files\Windows Admin Center\System.Web.Http.dll
C:\Program Files\Windows Admin Center\System.Web.Http.Owin.dll
Взял самый первый и Microsoft.AspNet.SignalR.Core.dll - имел не действующий сертификат ... ну а дальше вы все знаете.
Ну еще чуток кода, что проверяет система
private static void ValidatePlatformSignatures()
{
SignatureValidator signatureValidator = new SignatureValidator();
ValidationResult validationResult = new ValidationResult();
signatureValidator.Validate(Path.Combine(StaticFileConfiguration.Instance.RootFolder, StaticFileConfiguration.PluginsFolderName), validationResult);
signatureValidator.Validate(Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location), validationResult);
if (validationResult.IsValid)
{
Trace.TraceInformation("Validation complete. All assemblies have valid signatures.");
}
else
{
new SignatureValidationPolicy(GatewayHostInformation.IsDevelopmentMode, StaticFileConfiguration.IsDebug).ApplyTo(validationResult); // вот сюда мы попадали
}
}
Следствием того, что все пошло плохо стало обновление сертификатов на Windows 10.