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;</pre> 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ü](/assets/uploads/2010/01/BilgisayaraKuruluProgramlar_2.png "Bilgisayarda Kurulu Programlar Çalıştıktan Sonraki Ekran Görüntüsü")

İlgili diğer makaleler

blog comments powered by Disqus

Engin Polat hakkında

Senior Software Engineer, @Microsoft

Ada ve Ege'nin babası ;)

Kategoriler

İstatistik

Makale Adedi: 484

Creative Commons Lisansı