From f47fd234b41205802a2ccc9afa3578145d55b36b Mon Sep 17 00:00:00 2001 From: HolographicHat Date: Sun, 14 Aug 2022 21:42:21 +0800 Subject: [PATCH] add vcruntime check --- src/Program.cs | 2 ++ src/Utils.cs | 17 +++++++++++++++++ 2 files changed, 19 insertions(+) diff --git a/src/Program.cs b/src/Program.cs index 7dddc6d..2a7a73c 100644 --- a/src/Program.cs +++ b/src/Program.cs @@ -4,6 +4,8 @@ using YaeAchievement.AppCenterSDK.Models; using static YaeAchievement.Utils; InstallExitHook(); + +CheckVcRuntime(); CheckSelfIsRunning(); TryDisableQuickEdit(); InstallExceptionHook(); diff --git a/src/Utils.cs b/src/Utils.cs index 420d1e6..2e45806 100644 --- a/src/Utils.cs +++ b/src/Utils.cs @@ -243,6 +243,23 @@ public static class Utils { return Native.GetConsoleMode(handle, out var mode) && Native.SetConsoleMode(handle, mode&~64); } +#pragma warning disable CA1416 + public static void CheckVcRuntime() { + using var root = Registry.LocalMachine; + using var sub = root.OpenSubKey(@"SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall")!; + var installed = sub.GetSubKeyNames() + .Select(subKeyName => sub.OpenSubKey(subKeyName)) + .Select(item => item?.GetValue("DisplayName") as string ?? string.Empty) + .Any(name => name.Contains("Microsoft Visual C++ 2022 X64 ")); + if (!installed) { + Logger.Error("未安装 VcRuntime"); + Logger.Error("下载地址: https://aka.ms/vs/17/release/vc_redist.x64.exe"); + Logger.Error("安装完成后,重新打开 YaeAchievement"); + Environment.Exit(303); + } + } +#pragma warning restore CA1416 + public static void CheckGenshinIsRunning() { Process.EnterDebugMode(); foreach (var process in Process.GetProcesses()) {