using Microsoft.Win32; using System.Reflection; namespace Zcbot.WindowsNode; internal static class StartupRegistration { private const string RunKey = @"Software\Microsoft\Windows\CurrentVersion\Run"; private const string ValueName = "ZcbotWindowsNode"; internal static bool IsEnabled { get { using var key = Registry.CurrentUser.OpenSubKey(RunKey, writable: false); return string.Equals(key?.GetValue(ValueName) as string, Command, StringComparison.OrdinalIgnoreCase); } } internal static void SetEnabled(bool enabled) { using var key = Registry.CurrentUser.CreateSubKey(RunKey, writable: true); if (enabled) { key.SetValue(ValueName, Command, RegistryValueKind.String); } else { key.DeleteValue(ValueName, throwOnMissingValue: false); } } private static string Command { get { var path = Environment.ProcessPath ?? Assembly.GetExecutingAssembly().Location; return $"\"{path}\""; } } }