Hoşgeldin Misafir

C# ile Startup'a (Başlangıca) Dosya Ekleme Yöntemi

xS0N3R

23 Ağu 2020
5,427 Mesaj

Aktiflik

Seviye

Deneyim

TIM / GÖREV:
Merhaba bugün C# ile Startup yani başlangıca dosya eklemeye bakacağız.

Bu ne işe yarar derseniz;
Malware yazılımlarda mesela Crypter veya RAT başlangıca ekleme seçeneğini aktif ettiğinizde, O program kendini her PC açılıp kapandığında aktif eder. Yoksa bağlantıyı tek seferlik alırsınız.
Şimdi koda geçelim;

İlk olarak belirli bir yoldan EXE alıp onu ekleyeceğiz:

C#:
using Microsoft.Win32;
using System;
using System.Windows.Forms;

namespace startup
{
    class Program
    {
        static void Main(string[] args)
        {
            // burada 2 tane değişken atadık
            // bunlardan biri programın yolunu
            // diğeri programın ismini tutacak
            // programın kayıt defterinde
            // yani startupta olacak olan ismi tutuyoruz
            string exeYolu = @"C:\eklenecek_program.exe";
            string programAdi = "programın ismi";

            try
            {
                // win32 kütüphanesi kayıt defteri ile işlemler için
                // burada gördüğünüz registr key vs.
                // bu kütüphane ile açılıyor
                // burada kopyaladığımız yol
                // başlangıç yolu dosya buraya kopyalanacak
                RegistryKey rk = Registry.CurrentUser.OpenSubKey
                    ("SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run", true);
                if (rk == null)
                {
                    MessageBox.Show("Kayıt defteri anahtarı bulunamadı!");
                    return;
                }
                if (rk.GetValue(programAdi) == null)
                {
                    rk.SetValue(programAdi, exeYolu);
                    MessageBox.Show("Program başlangıca eklendi!");
                }
                else
                {
                    MessageBox.Show("Bu program zaten başlangıçta!");
                }
                rk.Close();
            }
            catch (Exception ex)
            {
                MessageBox.Show("Hata oluştu: " + ex.Message);
            }
            Console.WriteLine("İşlem tamamlandı.");
            Console.ReadLine();
        }
    }
}

Şimdide çalıştırılan EXE dosyasını Startup'a ekleyelim;

C#:
using Microsoft.Win32;
using System;
using System.Windows.Forms;

namespace startup
{
    class Program
    {
        static void Main(string[] args)
        {
            // normalde bir yoldan aldığımız exeyi
            // burada Application.ExecutablePath fonksiyonu
            // ile otomatik olarak exeye kendi yolunu verdik
            string exeYolu = Application.ExecutablePath;
            
            // bu kısımlar aynı regedittee görünecek isim
            string programAdi = "program ismi";

            try
            {
                RegistryKey rk = Registry.CurrentUser.OpenSubKey
                    ("SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run", true);
                if (rk == null)
                {
                    MessageBox.Show("Kayıt defteri erişilemez!");
                    return;
                }
                if (rk.GetValue(programAdi) == null)
                {
                    rk.SetValue(programAdi, exeYolu);
                    MessageBox.Show("Program başlangıca eklendi!");
                }
                else
                {
                    MessageBox.Show("Program zaten başlangıçta mevcut!");
                }
                rk.Close();
            }
            catch (Exception ex)
            {
                MessageBox.Show("Hata: " + ex.Message);
            }
            Console.WriteLine("İşlem bitti.");
            Console.ReadLine();
        }
    }
}