43 lines
1.1 KiB
C#
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}\"";
|
|
}
|
|
}
|
|
}
|