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.
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ç;
İlgili diğer başlıklar:
- LINQ ile Dosya Sisteminde Sorgulama Yapmak
- Dosya uzantısını uygulamanız ile ilişkilendirin
- C# ile LINQ filtrelerinin üç farklı kullanımı (Predicate Function, Anonymous Method, Lambda Expression)
- Bu kodda ne yanlış var? – 3
- C# Bir Windows Service’in Durumunu Belirlemek
- Bu kodda ne yanlış var? – 7
- C# MD5 yöntemi ile metin şifreleme
- Uygulamanın Referans Listesini Almak
- Windows 8 Uygulamalarında MessageBox yerine MessageDialog Sınıfının Kullanımı
- Windows 8 Metro Style Uygulamalarda Async Desteği


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.
böyle bir programı vb nasıl yaparımmm??