C# ile Görev Yöneticisini Tamamen Engelleme

Merhaba Arkadaşlar,
Bir projemde görev yöneticisini engelleme lazım olmuştu ve internet de çok aramama rağmen türkçe kaynak bulamamıştım. Yabancı bir forum sitesinde kodunu buldum ve size burada bu bilgimi aktarmaya çalışacağım. Kod kayıt defterindeki değeri değiştirerek görev yöneticisini engellemektedir. Ayrıca görev yönetici CTRL + ALT + DEL Tuşu ve başlat ikonuna sağ tıkladığımızda çıkan görev yöneticisini aç kısmını da engellemektedir 🙂

Başlıkta da ve yazımda da belirttiğim gibi tamamen engelleme olarak belirttim. Aşağıdaki resimde bununla ilgili bir örnek resim görebilirsiniz.

İlk önce aşağıdaki kodu ilk başta belirtmemiz gerek yani kütüphanemize eklememiz gerek.

using Microsoft.Win32;

Şimdi aşağıdaki kodda regedit ile gerekli yola gidip DisableTaskMgr Yolundaki veriyi “1” olarak değiştiriyoruz. Böylece görev yöneticisini engellemiş olacağız.

RegistryKey rkey = Registry.CurrentUser.OpenSubKey(@"Software\Microsoft\Windows\CurrentVersion\Policies", true);
rkey.CreateSubKey("System", RegistryKeyPermissionCheck.Default);
rkey.Close();
RegistryKey rkey2 = Registry.CurrentUser.OpenSubKey(@"Software\Microsoft\Windows\CurrentVersion\Policies\System", true);
rkey2.SetValue("DisableTaskMgr", 1);
rkey2.Close();

Eğer yeniden görev yöneticisini aktif etmek istiyorsak “1” olan değeri “0” yapmamız gerek.

RegistryKey rkey = Registry.CurrentUser.OpenSubKey(@"Software\Microsoft\Windows\CurrentVersion\Policies", true);
rkey.CreateSubKey("System", RegistryKeyPermissionCheck.Default);
rkey.Close();
RegistryKey rkey2 = Registry.CurrentUser.OpenSubKey(@"Software\Microsoft\Windows\CurrentVersion\Policies\System", true);
rkey2.SetValue("DisableTaskMgr", 0);
rkey2.Close();
C# ile Görev Yöneticisini Tamamen Engelleme
Visual Studio Windows Form Proje

18 yorum

  1. Altr Yanıtla

    RegistryKey rkey = Registry.CurrentUser.OpenSubKey(@”Software\Microsoft\Windows\CurrentVersion\Policies”, true);
    satırda bendede hata verdi. win32 yi eklememe ragmen

  2. anil Yanıtla

    Dostum AcilisReg.GetValue(“Skype”).ToString() olması lazım böyle çalışıyor…

    • Atakan Yasin Uludağ Yanıtla

      Ben kendi bilgisayarımda denediğimde bende bir hata vermedi. Zaten gelen veri string türünde geliyor. Tekrar ToString(); eklemek gereksiz ama bir sorun teşkil etmeyecektir.

  3. anıl Yanıtla

    Peki eklediğimiz programın başlangıçta açılıp açılmadığını c# ile nasıl anlarız ???

      • anıl Yanıtla

        c# ile ?? benm demek istediğim c# kodları arasında eger program başlangıçta çalışıyorsa butonun yazısı “başlangıçta çalışıyor” yazsın

        • Atakan Yasin Uludağ

          Referans olarak projene aşağıdaki kodu ekle.

          using Microsoft.Win32;
          

          Örnek olarak ben skype programının başlangıçta çalışıp çalışmadığını kontrol ettim. Ayrıca şunu belirtim aşağıdaki kodda skype yazan kısma direkt program adını yazarsan başlangıçta çalışsa bile çalışmıyor olarak gösterebilir. Regedit’de nasıl tanımlandığında bakman gerek onun için.

           RegistryKey AcilisReg = Registry.CurrentUser.OpenSubKey("SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run", true);
          
                      if (AcilisReg.GetValue("Skype") == null)
                      {
                          MessageBox.Show("Skype Başlangıçta Çalışmıyor");
                      }
                      else
                      {
                          MessageBox.Show("Skype Başlangıçta Çalışıyor.");
                      }
          
          
  4. anıl Yanıtla

    sorun çözüldü yönetici olarak çalıştırınca çalışıyor ama bunu sürekli yönetici olarak çalıştıramayız ki bunu nasıl düzeltecez

    • Atakan Yasin Uludağ Yanıtla

      Manifest dosyası ile yapabilirsin.Solution explorer penceresinde sağ tuş yap Properties i seç sonra oradan Security sekmesini.Orada bir checkbox vardır Enable Click Once Security Settings işaretle onu.Sonra kendi manifest dosyası oluşturuyor.Sonra işaretlediğin checkboxun işaretini kaldır.Gir manifest dosyasının içine ,

      <requestedExecutionLevel level=" asInvoker " uiAccess="false" />

      yazar

      </requestedPrivileges>

      in üstünde

      <requestedExecutionLevel level=" asInvoker " uiAccess="false" />

      bu satırı şununla değiştir.

      <requestedExecutionLevel level=" requireAdministrator " uiAccess="false" />
    • Atakan Yasin Uludağ Yanıtla

      Ben bu kodları Windows 7’de denedim. Hiçbir hata almadım. Windows 8’de deniyorsanız hata alabilirsiniz belki. Ayrıca programını yönetici modunda çalıştırmanızı öneririm.

  5. anıl Yanıtla

    bende aynı htayı aldım ben kod kısmına using Microsoft.Win32; ekledim ama referans bölümündede eklememiz gerek mi *

    • Atakan Yasin Uludağ Yanıtla
      using Microsoft.Win32;

      kodunu kodlarınızın en yukarısına ekleyin. En yukarıda using ile başlıycan satırlar var oraya eklemeniz gerek. Zaten resimde herşey gözüküyor. Ayrıca proje dosyasını da konu altında verdim.

  6. evliya Yanıtla

    hocam programı kopyalayıp yapıstırmama ragmen hata alıyorum
    RegistryKey rkey = Registry.CurrentUser.OpenSubKey(@”Software\Microsoft\Windows\CurrentVersion\Policies”, true);
    bu satar ıcın “Requested registry access is not allowed. ” bu hatayı verıyorsebebı ne olabılır acaba ?

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

This site uses Akismet to reduce spam. Learn how your comment data is processed.