zcbot/windows-node/Zcbot.WindowsNode/StartupRegistration.cs

43 lines
1.1 KiB
C#

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}\"";
}
}
}