• VLMI - форум по обмену информацией. На форуме можете найти способы заработка, разнообразную информацию по интернет-безопасности, обмен знаниями, курсы/сливы.

    После регистрации будут доступны основные разделы.

    Контент форума создают пользователи, администрация за действия пользователей не несёт ответственности, отказ от ответственности. Так же перед использованием форума необходимо ознакомиться с правилами ресурса. Продолжая использовать ресурс вы соглашаетесь с правилами.
  • Подпишись на наш канал в Telegram для информации о актуальных зеркалах форума: https://t.me/vlmiclub

С# Универсальная автозагрузка в реестр

Antlion

Участник
Сообщения
12
Реакции
13
0 руб.
Telegram
Написал класс для добавления программы в автозагрузку через реестр:

Код:
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");

Проверим что всё работает

Запуск без Админ прав:

23369

Запуск с Админ правами:

23370


По стандарту можно сделать так:

Код:
// Используем так: 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) { }
}
 
Сверху Снизу