Написал класс для добавления программы в автозагрузку через реестр:
Класс для проверки админ прав и битность системы
Использовать очень просто
Добавить в реестр:
Удалить из реестра:
Проверим что всё работает
Запуск без Админ прав:
Запуск с Админ правами:
По стандарту можно сделать так:
Код:
using Microsoft.Win32;
using System;
public class Registration
{
private const string REG = @"Software\Microsoft\Windows\CurrentVersion\Run";
public static void Inizialize(bool enable, string name, string localpath)
{
try
{
RegistryHive registryHive = RunChecker.IsAdmin ? RegistryHive.LocalMachine : RegistryHive.CurrentUser;
RegistryView registryView = RunChecker.IsWin64 ? RegistryView.Registry64 : RegistryView.Registry32;
using (var registry = RegistryKey.OpenBaseKey(registryHive, registryView))
{
using (RegistryKey runKey = registry.OpenSubKey(REG, RunChecker.IsWin64))
{
if (!enable)
{
try
{
runKey?.DeleteValue(name);
}
catch { }
}
else
{
try
{
runKey?.SetValue(name, localpath);
}
catch { }
}
}
}
}
catch (Exception) { }
}
}
Класс для проверки админ прав и битность системы
Код:
using System;
using System.Reflection;
using System.Runtime.InteropServices;
using System.Security.Principal;
using System.Threading;
public class RunChecker
{
public static bool IsAdmin => new WindowsPrincipal(WindowsIdentity.GetCurrent()).IsInRole(WindowsBuiltInRole.Administrator);
public static bool IsWin64 => Environment.Is64BitOperatingSystem ? true : false;
}
Использовать очень просто
Добавить в реестр:
Registration.Inizialize(true, "Test", @"D:\AntiWinlocker.exe");
Удалить из реестра:
Registration.Inizialize(false, "Test", @"D:\AntiWinlocker.exe");
Проверим что всё работает
Запуск без Админ прав:
Запуск с Админ правами:
По стандарту можно сделать так:
Код:
// Используем так: Standart(@"Software\Microsoft\Windows\CurrentVersion\Run", "Test", @"D:\AntiWinlocker.exe"); // Разумеется используйте свои данные.
public static void Standart(string regpath, string name, string path_to_file)
{
try
{
using (RegistryKey key = Registry.CurrentUser.OpenSubKey(regpath, true))
{
try
{
key.SetValue(name, path_to_file);
}
catch (Exception) { }
}
}
catch (Exception) { }
}