Visual Basic.NET ile Registry İşlemleri
Bu makalede Base Class Libraryi ve Visual Basic.NETi kullanarak registrye yazma ve registryden okuma işlemlerini gerçekleştirecek prosedürler geliştirmeyi ele alıyor olacağız.
GetSetting, SaveSetting Fonksiyonları
Visual Basic.NET registrye veri yazmak için SaveSetting, registryden veri okumak içinse GetSetting fonksiyonlarını sunmaktadır ancak bu fonksiyonlar aşağıdaki kısıtlamalarla birlikte kullanılıyordu.
- Sadece HKEY_CURRENT_USER\Software\VB altındaki registry anahtarlarına erişmemize izin verir
- HKEY_CURRENT_USER altında işlem yapacağımız için bu fonksiyonları kullanarak işlem yapabilmek için oturum açmış olmamız gerekmektedir ve bu anahtar oturum açana kadar erişilebilir durumda olmayacaktır.
Registry ve RegistryKey Sınıflarının Kullanımı
GetSetting ve SaveSetting fonksiyonlarının kısıtlamaları olmadan registry üzerinde işlem yapabilmek için Microsoft.Win32 namespaceinde yer alan Registry ve RegistyKEY sınıflarını kullanırız. Registry anahtarı değerlere ve registry içinde yer alan alt anahtarlara erişebilmemizi sağlayan temel registry anahtarlarını sağlar. Kök registry anahtarını (CurrentUser gibi) temsil eden statik alanları vardır.
RegistryKey sınıfı ise sunduğu GetValue ve SetValue metodları aracılığıyla registrye veri ekleme ve registryden veri okuma imkanı sağlar.
Aşağıda bu iki sınıfı kullanarak registrye veri yazabilen ve registryden veri okuyabilen bir uygulamanın kodlarını görebilirsiniz. Uygulamada öncelikle veri okumak ve veri yazmak için iki prosedür hazırlanmakta, daha sonra bu prosedürlerin kullanımı örneklenmekte.
Imports System.Diagnostics
Imports Microsoft.Win32
Module RegistryIslemleri
Sub RegistryeVeriYaz(ByVal AnaAnahtar As RegistryKey, ByVal AltAnahtar As String, ByVal DegerAdi As String, ByVal deger As Object)
Dim k As RegistryKey
Try
registry anahtarını aç
k = AnaAnahtar.OpenSubKey(AltAnahtar, True)
If k Is Nothing Then anahtar yoksa
k = AnaAnahtar.CreateSubKey(AltAnahtar)
End If
değeri yaz
k.SetValue(DegerAdi, deger)
Console.WriteLine("{0} için {1} değeri başarıyla registrye yazıldı.", DegerAdi, deger)
Catch ex As Exception
Console.WriteLine("Registrye veri yazma işlemi esnasında aşağıdaki hata ile karşılaşıldı" & ControlChars.CrLf & ex.Message)
End Try
End Sub
Sub RegistydenVeriOku(ByVal AnaAnahtar As RegistryKey, ByVal AltAnahtar As String, ByVal DegerAdi As String, ByVal Deger As Object)
Dim k As RegistryKey
Try
registry anahtarını aç
k = AnaAnahtar.OpenSubKey(AltAnahtar, False)
If k Is Nothing Then eğer anahtar yoksa
Throw New Exception("Anahtar bulunamadı")
End If
değeri oku
Deger = k.GetValue(DegerAdi)
Console.WriteLine("{0} için {1} değeri başarıyla okundu", DegerAdi, Deger)
Catch ex As Exception
Console.WriteLine("Veri okuma işlemi sırasında aşağıdaki hata ile karşılaşıldı." & ControlChars.CrLf & ex.Message)
End Try
End Sub
Sub Main()
Veri yazıyoruz
RegistryeVeriYaz(Registry.CurrentUser, "Software\SuperUygulama", "Sayac", 1)
Veri Okuyoruz
Dim deger As Object
RegistydenVeriOku(Registry.CurrentUser, "Software\SuperUygulama", "Sayac", deger)
enter tuşuna basılmasını bekliyoruz
Console.ReadLine()
End Sub
End Module
Uygulama HKEY_CURRENT_USER\Software altında SuperUygulama adlı bir anahtar oluşturacak ve buraca Count adında bir DWORD değeri oluşturacak ve değer olacakta 1 verecektir.
