Ana Sayfa > C#, Programlama > LINQ ile Bilgisayara Kurulu Programları Sorgulamak

LINQ ile Bilgisayara Kurulu Programları Sorgulamak

Bu yazımda, bilgisayarda kurulu programları, LINQ kullanarak nasıl sorgulayacağımızı inceleyeceğim.

Bilgisayara kurduğumuz her program bilgisayarın Registry‘sine kurulum ile ilgili bir kayıt bırakır.

Bilmeyenler için not: Registry’yi açmak için komut satırına regedit yazmanız yeterli.

Registry ile ilgili daha detaylı bilgi için MSDN: Registry sayfasına bakmanızı tavsiye ederim.

Registry‘nin LocalMachine\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall dalında, bilgisayara kurulu olan uygulamalara ve bu uygulamalar ile ilgili bilgilere ulaşılabilir.

Uygulamamızda, Registry class’ını kullanabilmek için, kodumuza aşağıdaki namespace’i eklememiz gerekiyor.

using Microsoft.Win32;

Hemen form tasarlamakla başlayalım.

Bilgisayarda Kurulu Programlar Ana Form Ekran Görüntüsü

Yukarıdaki formu oluşturduktan sonra btnGetir butonunun Click olayına aşağıdaki kodu yazalım;

using (RegistryKey rk = Registry.LocalMachine.OpenSubKey(@"SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall"))
{
	var programlar = from k in rk.GetSubKeyNames()
					 let r = rk.OpenSubKey(k)
					 select r.GetValue("DisplayName");

	foreach (string program in programlar)
		if (!string.IsNullOrWhiteSpace(program))
			lbProgramlar.Items.Add(program);
}

Registry sınıfının static LocalMachine üyesi üzerinden OpenSubKey() method’unu çağırıyoruz.

Daha sonra yaptığımız;

from k in rk.GetSubKeyNames()
let r = rk.OpenSubKey(k)
select r.GetValue("DisplayName");

LINQ sorgusunu yazmak oluyor. Bu sorgu, ilgili Registry dalının altında bulunan tüm dalları açar ve içlerindeki DisplayName anahtarının değerini getirir.

Son olarak basit bir foreach döngüsü ile bu değerleri lbProgramlar Listbox kontrolüne dolduruyoruz.

İşte benim bilgisayarımdaki sonuç;

Bilgisayarda Kurulu Programlar Çalıştıktan Sonraki Ekran Görüntüsü


İlgili diğer başlıklar:

  1. LINQ ile Dosya Sisteminde Sorgulama Yapmak
  2. Bu kodda ne yanlış var? – 3
  3. C# Bir Windows Service’in Durumunu Belirlemek
  4. C# String Dizisini String Uzunluğuna Göre Sıralama
  5. Dizide bir elemandan kaç adet olduğunu bulalım


  1. Ahmet
    Mart 30th, 2010 at 18:03 | #1

    Merhaba,

    Yazı için teşekkürler.
    Peki listbox’daki seçili programın label’da üreticisini göstermek için “SelectedIndexChanged” olayına nasıl bir LINQ sorgusu yazabiliriz acaba ? Aynı mantıkla “DisplayName” yerine “Publisher” değeriyle çekmeye çalıştığımda label’a bütün üreticileri listeliyor. Listbox’un SelectedItems özelliğiyle kullanmaya çalıştım ama işin içinden çıkamadım.

    Teşekkürler.