Registry İşlemleri
Kullanılabilecek Registry ana dizinleri
CurrentUser Kullanıcı tercihleri ile ilgili bilgi içerir.
LocalMachine Yerel makine konfigürasyonu hakkında bilgi içerir.
ClassesRoot Tipler ve özellikleri hakkında bilgi içerir.
Users Varsayılan kullanıcı hakkında bilgi içerir.
PerformanceData Yazılım performanları ile ilgili bilgi içerir.
CurrentConfig Kullanıcı bağımsız donanım konfigurasyon bilgisi içerir.
DynData Dinamik data bilgisi içerir.
VB.NET Registry
ClassesRoot HKEY_CLASSES_ROOT registry anahtarına erişmek için kullanılır.
CurrentConfig HKEY_CURRENT_CONFIG registry anahtarına erişmek için kullanılır.
CurrentUser HKEY_CURRENT_USER registry anahtarına erişmek için kullanılır.
DynData HKEY_DYN_DATA registry anahtarına erişmek için kullanılır.
LocalMachine HKEY_LOCAL_MACHINE registry anahtarına erişmek için kullanılır.
PerformanceData HKEY_PERFORMANCE_DATA registry anahtarına erişmek için kullanılır.
Users HKEY_USERS registry anahtarına erişmek için kullanılır.
RegistryKey Class
RegistryKey sınıfı registry e okuma,yazma,değiştirme ve silme olanağı tanır. Özellik ve metodlarına bakacak olursak;
Özellikler Açıklama
Name Anahtarın ismini gösterir.
SubKeyCount Temel seviyedeki alt anahtar sayısını gösterir.
ValueCount Değer sayısını gösterir.
Özellikler Açıklama
Close Anahtarı kapatır.
CreateSubKey Şayet yoksa alt anahtar oluşturur varsa mevcut anahtarı açar.
DeleteSubKey Alt anahtarı siler.
DeleteSubKeyTree Alt anahtarı ve alt yordamlarını siler.
DeleteValue Belirlenmiş değeri siler.
GetSubKeyNames Alt anahtar isimlerini içeren bir dizi döndürür.
GetValue Belirlenmiş değeri gösterir.
GetValueNames Bu anahtar için tanımlanmış değerleri dizi şeklinde döndürür.
OpenSubKey Alt anahtar açar.
SetValue Belirlenmiş değeri ayarlar.
Örnek Kullanımlar
‘ gerekli olan .Net NameSpace yükleyelim
Imports Microsoft.Win32
‘ Registry değerlerini atayabileceğimiz bir değişken tanımlayalım.
Dim kayit as RegistryKey
‘ Registry üzerinde açacağımız klasörü tanimlayalim
Dim anahtar As String = “arastiriyorum.com”
‘Local_Machine üzerindeki klasörü var mı diye kontrol etmek
kayit = Registry.LocalMachine.OpenSubKey (anahtar, True)
If anahtar Is Nothing Then
Msgbox “Anahtar Yok”
End If
‘Local_Machine üzerine arastiriyorum.com isimli klasör açmak
kayit = Registry.LocalMachine.CreateSubKey (anahtar)
‘registry üzerinde bir klasörün altındaki bir değeri değiştirmek için öncelikle klasörü
‘açabilmeliyiz bu yüzden önce kontrol ettiririz eğer klasör mevcut değilse içindeki
‘anahtarları okumada hata oluşacaktır.
‘REG_SZ Alt anahtarının arastiriyorum.com isimli klasöre yazılması
Dim alt_anahtar As String = “Kontrol”
Dim alt_anahtar_deger As String = “Gecti”
kayit = Registry.LocalMachine.OpenSubKey (anahtar, True)
‘ Alt anahtar oluşturup değerini atamak
kayit.SetValue (alt_anahtar,alt_anahtar_deger)
‘ Alt anahtarı silmek
kayit.DeleteSubKey (alt_anahtar)
‘ Alt Anahtarın değerini okumak
Msgbox (”Alt Anahtarın değeri = ” & kayit.GetValue(alt_anahtar).ToString )
‘REG_BINARY değerli bir alt anahtar oluşturalım
alt_anahtar = “Versiyon”
Dim alt_anahtar_byte() As Byte = { 1, 6, 9, 0 }
kayit.SetValue ( alt_anahtar,alt_anahtar_byte)
‘ REG_DWORD anahtar oluşturma
alt_anahtar = “Acilma_Sayisi”
Dim alt_anahtar_dword As Integer = 115
kayit.SetValue ( alt_anahtar,alt_anahtar_dword)
‘okumak
MsgBox(CInt(reg.GetValue(alt_anahtar).ToString()))
‘REG_MULTI_SZ anahtar oluşturma, okuma
alt_anahtar = “Siteler”
Dim alt_anahtar_multisz As String() = {”www.arastiriyorum.com” & vbCrLf & “www.kullukcuoglu.com”}
kayit.SetValue ( alt_anahtar,alt_anahtar_multisz)
‘Okumak
Dim deger As String
Dim alt_anahtar_deger As String() = kayit.GetValue(alt_anahtar)
For i As Integer = 0 To alt_anahtar_deger.GetUpperBound(0)
deger += alt_anahtar_deger(i)
Next
MsgBox(deger)
Örnek
Programdaki amaç Terminal Server (Çok kullanıcılı bir xp,vista içinde kullanılabilir) üzerinde giriş yapmış tüm kullanıcıların registrylerine erişip bir değer eklenmesi ile ilgili. Free olan bir programın tüm kullanıcılarda kayıt etme zorunluluğu gibi veya bir programın registry üzerinde tuttuğu ayarları tüm kullanıcılarda değiştirmek için kullanılabilir. Eğer yapınızda Active Directory
mevcut ise yeni bir adm veya admx dosyası oluşturarak registry üzerine yazmayıda sağlayabilirsiniz.
Imports Microsoft.Win32
Public Class Form1
Dim reg As RegistryKey
Dim sid, anahtar As String
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
For i = 1000 To 1400
sid = "S-1-5-21-3097270690-711011111-935111111-" + i.ToString
reg = Registry.Users.OpenSubKey(sid, True)
' Registry değeri mevcur değilse yani o SID ye ait bir kullanıcı yoksa bir sonraki SID ye geçelim
If reg Is Nothing Then
GoTo son
End If
' SID Varsa
anahtar = sid + "SoftwareXXSoftLisans"
reg = Registry.Users.OpenSubKey(anahtar, True)
'Eğer Lisans Anahtarı açılmamışsa oluşturalım
If reg Is Nothing Then
reg = Registry.Users.CreateSubKey(sid + "SoftwareXXSoftLisans")
End If
reg.SetValue("Lisans_Aktif", 1)
son:
Next
End Sub
End Class
CurrentUser Kullanıcı tercihleri ile ilgili bilgi içerir.
LocalMachine Yerel makine konfigürasyonu hakkında bilgi içerir.
ClassesRoot Tipler ve özellikleri hakkında bilgi içerir.
Users Varsayılan kullanıcı hakkında bilgi içerir.
PerformanceData Yazılım performanları ile ilgili bilgi içerir.
CurrentConfig Kullanıcı bağımsız donanım konfigurasyon bilgisi içerir.
DynData Dinamik data bilgisi içerir.
VB.NET Registry
ClassesRoot HKEY_CLASSES_ROOT registry anahtarına erişmek için kullanılır.
CurrentConfig HKEY_CURRENT_CONFIG registry anahtarına erişmek için kullanılır.
CurrentUser HKEY_CURRENT_USER registry anahtarına erişmek için kullanılır.
DynData HKEY_DYN_DATA registry anahtarına erişmek için kullanılır.
LocalMachine HKEY_LOCAL_MACHINE registry anahtarına erişmek için kullanılır.
PerformanceData HKEY_PERFORMANCE_DATA registry anahtarına erişmek için kullanılır.
Users HKEY_USERS registry anahtarına erişmek için kullanılır.
RegistryKey Class
RegistryKey sınıfı registry e okuma,yazma,değiştirme ve silme olanağı tanır. Özellik ve metodlarına bakacak olursak;
Özellikler Açıklama
Name Anahtarın ismini gösterir.
SubKeyCount Temel seviyedeki alt anahtar sayısını gösterir.
ValueCount Değer sayısını gösterir.
Özellikler Açıklama
Close Anahtarı kapatır.
CreateSubKey Şayet yoksa alt anahtar oluşturur varsa mevcut anahtarı açar.
DeleteSubKey Alt anahtarı siler.
DeleteSubKeyTree Alt anahtarı ve alt yordamlarını siler.
DeleteValue Belirlenmiş değeri siler.
GetSubKeyNames Alt anahtar isimlerini içeren bir dizi döndürür.
GetValue Belirlenmiş değeri gösterir.
GetValueNames Bu anahtar için tanımlanmış değerleri dizi şeklinde döndürür.
OpenSubKey Alt anahtar açar.
SetValue Belirlenmiş değeri ayarlar.
Örnek Kullanımlar
‘ gerekli olan .Net NameSpace yükleyelim
Imports Microsoft.Win32
‘ Registry değerlerini atayabileceğimiz bir değişken tanımlayalım.
Dim kayit as RegistryKey
‘ Registry üzerinde açacağımız klasörü tanimlayalim
Dim anahtar As String = “arastiriyorum.com”
‘Local_Machine üzerindeki klasörü var mı diye kontrol etmek
kayit = Registry.LocalMachine.OpenSubKey (anahtar, True)
If anahtar Is Nothing Then
Msgbox “Anahtar Yok”
End If
‘Local_Machine üzerine arastiriyorum.com isimli klasör açmak
kayit = Registry.LocalMachine.CreateSubKey (anahtar)
‘registry üzerinde bir klasörün altındaki bir değeri değiştirmek için öncelikle klasörü
‘açabilmeliyiz bu yüzden önce kontrol ettiririz eğer klasör mevcut değilse içindeki
‘anahtarları okumada hata oluşacaktır.
‘REG_SZ Alt anahtarının arastiriyorum.com isimli klasöre yazılması
Dim alt_anahtar As String = “Kontrol”
Dim alt_anahtar_deger As String = “Gecti”
kayit = Registry.LocalMachine.OpenSubKey (anahtar, True)
‘ Alt anahtar oluşturup değerini atamak
kayit.SetValue (alt_anahtar,alt_anahtar_deger)
‘ Alt anahtarı silmek
kayit.DeleteSubKey (alt_anahtar)
‘ Alt Anahtarın değerini okumak
Msgbox (”Alt Anahtarın değeri = ” & kayit.GetValue(alt_anahtar).ToString )
‘REG_BINARY değerli bir alt anahtar oluşturalım
alt_anahtar = “Versiyon”
Dim alt_anahtar_byte() As Byte = { 1, 6, 9, 0 }
kayit.SetValue ( alt_anahtar,alt_anahtar_byte)
‘ REG_DWORD anahtar oluşturma
alt_anahtar = “Acilma_Sayisi”
Dim alt_anahtar_dword As Integer = 115
kayit.SetValue ( alt_anahtar,alt_anahtar_dword)
‘okumak
MsgBox(CInt(reg.GetValue(alt_anahtar).ToString()))
‘REG_MULTI_SZ anahtar oluşturma, okuma
alt_anahtar = “Siteler”
Dim alt_anahtar_multisz As String() = {”www.arastiriyorum.com” & vbCrLf & “www.kullukcuoglu.com”}
kayit.SetValue ( alt_anahtar,alt_anahtar_multisz)
‘Okumak
Dim deger As String
Dim alt_anahtar_deger As String() = kayit.GetValue(alt_anahtar)
For i As Integer = 0 To alt_anahtar_deger.GetUpperBound(0)
deger += alt_anahtar_deger(i)
Next
MsgBox(deger)
Örnek
Programdaki amaç Terminal Server (Çok kullanıcılı bir xp,vista içinde kullanılabilir) üzerinde giriş yapmış tüm kullanıcıların registrylerine erişip bir değer eklenmesi ile ilgili. Free olan bir programın tüm kullanıcılarda kayıt etme zorunluluğu gibi veya bir programın registry üzerinde tuttuğu ayarları tüm kullanıcılarda değiştirmek için kullanılabilir. Eğer yapınızda Active Directory
mevcut ise yeni bir adm veya admx dosyası oluşturarak registry üzerine yazmayıda sağlayabilirsiniz.
Imports Microsoft.Win32
Public Class Form1
Dim reg As RegistryKey
Dim sid, anahtar As String
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
For i = 1000 To 1400
sid = "S-1-5-21-3097270690-711011111-935111111-" + i.ToString
reg = Registry.Users.OpenSubKey(sid, True)
' Registry değeri mevcur değilse yani o SID ye ait bir kullanıcı yoksa bir sonraki SID ye geçelim
If reg Is Nothing Then
GoTo son
End If
' SID Varsa
anahtar = sid + "SoftwareXXSoftLisans"
reg = Registry.Users.OpenSubKey(anahtar, True)
'Eğer Lisans Anahtarı açılmamışsa oluşturalım
If reg Is Nothing Then
reg = Registry.Users.CreateSubKey(sid + "SoftwareXXSoftLisans")
End If
reg.SetValue("Lisans_Aktif", 1)
son:
Next
End Sub
End Class
Yorumlar