• XSS.stack #1 – первый литературный журнал от юзеров форума

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

r3xq1

(L3) cache
Пользователь
Регистрация
14.01.2020
Сообщения
233
Реакции
146
Написал класс для добавления программы в автозагрузку через реестр:
C#:
using Microsoft.Win32;
using System;

/* Author r3xq1 */

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) { }
    }
}
Класс для проверки админ прав и битность системы
C#:
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");

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

1578988578315.png

1578988623938.png

По стандарту можно сделать так:
C#:
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) { }
}
Используется так:
C#:
Standart(@"Software\Microsoft\Windows\CurrentVersion\Run", "Test", @"D:\AntiWinlocker.exe"); // Разумеется используйте свои данные.
 


Напишите ответ...
  • Вставить:
Прикрепить файлы
Верх