VB.net üzerinde registry iş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 = “mustafa54.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 mustafa54.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 mustafa54.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.mustafa54.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