Registry'de Silme (Alt Kütüklerle beraber - Deltree gibi)

VBA Makrolar ile ilgili sormak istedikleriniz, yapmak istedikleriniz hakkında yardım alabileceğiniz bölümdür.

Registry'de Silme (Alt Kütüklerle beraber - Deltree gibi)

İleti#1)  Enemy » 01 Mar 2011 08:51

Merhaba;

VBA'da registry'deki kütükleri ve, o kütüğe ait alt klasörleri döngüyle görüp; İstenilen kütükler bulunduğunda ise alt kütükleri ile beraber silmek mümkün müdür?

Mesela aranılan Hkey_Local_Machine içinde yeri bilinmeyen Office olsun (HKLM\Software\Microsoft\Office ==> Normalde burada). Döngü ile burayı bulsun.

Daha sonra bu kütüğün alt kütükleri de (11.0, 8.0, 9.0 gibi alt klasörleri (kütükleri) mevcut olduğu halde tamamen silinebilsin. Ben beceremedim. Bu mümkün müdür? Kaç gündür forumlardaki döngülere de bakarak bir şeyler yapmaya çalıştım. Ama nafile. Şimdiden yardımlarınız için teşekkürler.
Kullanıcı avatarı
Enemy
 
Adı Soyadı:Ersin Kibrit
Kayıt: 24 Arl 2009 23:49
Konum: Zonguldak
Meslek: Stoker
Yaş: 55
İleti: 9
 
Cinsiyet: Bay
Bulunduğunuz İl / Semt: Zonguldak

Cevap: Registry'de Silme (Alt Kütüklerle beraber - Deltree g

İleti#2)  Murat OSMA » 01 Mar 2011 10:31

Bu işlemi yapan programlar var, denediniz mi ? [ilginc]
Kullanıcı avatarı
Murat OSMA
Site Forum Yöneticisi
 
Adı Soyadı:Murat OSMA
Kayıt: 04 Arl 2008 22:34
Konum: İstanbul
Meslek: Excel & VBA Eğitmeni
Yaş: 35
İleti: 14366
 
Cinsiyet: Bay
Bulunduğunuz İl / Semt: Bağcılar - İSTANBUL

Cevap: Registry'de Silme (Alt Kütüklerle beraber - Deltree g

İleti#3)  Enemy » 01 Mar 2011 12:58

Öncelikle ilginiz için teşekkür ederim. Evet bahsettiğiniz programları kullandım, biliyorum. Ama bu işlemi VBA'da yapabilirsem çok daha iyi olacak. VB'de var bu özellik, kütükleri alt klasörleri ile silme işlemi ama bunu VBA'ya uyarlanır mı onu bilmiyorum. (DeleteSubKeyTree komutu ile) Teşekkürler.
Kullanıcı avatarı
Enemy
 
Adı Soyadı:Ersin Kibrit
Kayıt: 24 Arl 2009 23:49
Konum: Zonguldak
Meslek: Stoker
Yaş: 55
İleti: 9
 
Cinsiyet: Bay
Bulunduğunuz İl / Semt: Zonguldak

Cevap: Registry'de Silme (Alt Kütüklerle beraber - Deltree g

İleti#4)  Haldun Alay » 01 Mar 2011 14:08

Merhabalar,

Internette ufak bir araştırma ile aşağıdaki kodları buldum.
Kodları denemek tamamen sizin sorumluluğunuzda :)


Kod: Tümünü seç
Const HKEY_CURRENT_USER = &H80000001
Const REG_OPTION_BACKUP_RESTORE = 4 ' open for backup or restore
Const REG_OPTION_VOLATILE = 1 ' Key is not preserved when system is rebooted
Const REG_OPTION_NON_VOLATILE = 0 ' Key is preserved when system is rebooted
Const STANDARD_RIGHTS_ALL = &H1F0000
Const SYNCHRONIZE = &H100000
Const READ_CONTROL = &H20000
Const STANDARD_RIGHTS_READ = (READ_CONTROL)
Const STANDARD_RIGHTS_WRITE = (READ_CONTROL)
Const KEY_CREATE_LINK = &H20
Const KEY_CREATE_SUB_KEY = &H4
Const KEY_ENUMERATE_SUB_KEYS = &H8
Const KEY_NOTIFY = &H10
Const KEY_QUERY_VALUE = &H1
Const KEY_SET_VALUE = &H2
Const KEY_READ = ((STANDARD_RIGHTS_READ Or KEY_QUERY_VALUE Or KEY_ENUMERATE_SUB_KEYS Or KEY_NOTIFY) And (Not SYNCHRONIZE))
Const KEY_WRITE = ((STANDARD_RIGHTS_WRITE Or KEY_SET_VALUE Or KEY_CREATE_SUB_KEY) And (Not SYNCHRONIZE))
Const KEY_EXECUTE = (KEY_READ)
Const KEY_ALL_ACCESS = ((STANDARD_RIGHTS_ALL Or KEY_QUERY_VALUE Or KEY_SET_VALUE Or KEY_CREATE_SUB_KEY Or KEY_ENUMERATE_SUB_KEYS Or KEY_NOTIFY Or KEY_CREATE_LINK) And (Not SYNCHRONIZE))
Private Declare Function RegCloseKey Lib "advapi32.dll" (ByVal hKey As Long) As Long
Private Declare Function RegDeleteKey Lib "advapi32.dll" Alias "RegDeleteKeyA" (ByVal hKey As Long, ByVal lpSubKey As String) As Long
Private Declare Function RegCreateKeyEx Lib "advapi32.dll" Alias "RegCreateKeyExA" (ByVal hKey As Long, ByVal lpSubKey As String, ByVal Reserved As Long, ByVal lpClass As String, ByVal dwOptions As Long, ByVal samDesired As Long, lpSecurityAttributes As Any, phkResult As Long, lpdwDisposition As Long) As Long
Private Declare Function RegOpenKeyEx Lib "advapi32.dll" Alias "RegOpenKeyExA" (ByVal hKey As Long, ByVal lpSubKey As String, ByVal Reserved As Long, ByVal samDesired As Long, phkResult As Long) As Long

Private Sub Form_Load()
Dim Result As Long
'Check if the specified key exists
RegOpenKeyEx HKEY_CURRENT_USER, "KPD-Team", 0, KEY_ALL_ACCESS, Result
'If the key doesn't exist, we create it
If Result = 0 Then
'Create a new key
RegCreateKeyEx HKEY_CURRENT_USER, "KPD-Team", 0, "REG_DWORD", REG_OPTION_NON_VOLATILE, KEY_ALL_ACCESS, ByVal 0&, Result, Ret
If Result = 0 Then
MsgBox "Error while creating the Key!!"
Exit Sub
End If
End If
'Delete the key
RegDeleteKey Result, ""
'close the handle
RegCloseKey Result
End Sub
Kullanıcı avatarı
Haldun Alay
Site Dostu
 
Adı Soyadı:Haldun Alay
Kayıt: 15 Haz 2008 00:14
Konum: Rakım 0
Meslek: Turizm
Yaş: 49
İleti: 1241
 
Cinsiyet: Bay
Bulunduğunuz İl / Semt: Aydın/Kuşadası

REKLAM
Excel Logo XML Oluşturucu
Logo Object Designer ile Uyarlama

Cevap: Registry'de Silme (Alt Kütüklerle beraber - Deltree g

İleti#5)  Enemy » 01 Mar 2011 14:17

Çok teşekkür ederim. Hemen deneyip sonucu bildireceğim. Sağolun.
Kullanıcı avatarı
Enemy
 
Adı Soyadı:Ersin Kibrit
Kayıt: 24 Arl 2009 23:49
Konum: Zonguldak
Meslek: Stoker
Yaş: 55
İleti: 9
 
Cinsiyet: Bay
Bulunduğunuz İl / Semt: Zonguldak

Cevap: Registry'de Silme (Alt Kütüklerle beraber - Deltree g

İleti#6)  Enemy » 01 Mar 2011 14:23

Teşekkür ederim. Gönderdiğiniz kodlar çalışıyor fakat ben HKEY_CURRENT_USER altında oluşturulan KPD-Team kütüğüne yeni bir anahtar (klasör) oluşturduğumda maalesef bu KPD-Team kütüğü tamamen silinemiyor. Benim amacım alt klasörleri olsa bile KPD-Team kütüğünü registry'den silebilmek. Teşekkürler.
Kullanıcı avatarı
Enemy
 
Adı Soyadı:Ersin Kibrit
Kayıt: 24 Arl 2009 23:49
Konum: Zonguldak
Meslek: Stoker
Yaş: 55
İleti: 9
 
Cinsiyet: Bay
Bulunduğunuz İl / Semt: Zonguldak

REKLAM
ETA - Excel Konsolide Raporlama
ETA Excel Personel Entegre Raporu

Cevap: Registry'de Silme (Alt Kütüklerle beraber - Deltree g

İleti#7)  Haldun Alay » 01 Mar 2011 17:54

Merhabalar,

Aşağıdaki kodu deneyin.
Kod: Tümünü seç
Enum HkeyTypes
    HKEY_CLASSES_ROOT = &H80000000
    HKEY_CURRENT_USER = &H80000001
    HKEY_LOCAL_MACHINE = &H80000002
    HKEY_USERS = &H80000003
    HKEY_CURRENT_CONFIG = &H80000005
End Enum

Dim objRegistry As Object
Private Sub DeleteKeyWithAllSubs()
    On Error Resume Next
    strComputer = "."
    strKeyPath = "KPD-Team"
    Set objRegistry = GetObject("winmgmts:\\" & strComputer & "\root\default:StdRegProv")
    DeleteSubkeys HKEY_CURRENT_USER, strKeyPath
End Sub

Private Sub DeleteSubkeys(Hkey As HkeyTypes, strKeyPath)
    objRegistry.EnumKey Hkey, strKeyPath, arrSubkeys
    If IsArray(arrSubkeys) Then
        For Each strSubkey In arrSubkeys
            DeleteSubkeys Hkey, strKeyPath & "\" & strSubkey
        Next
    End If
    objRegistry.DeleteKey Hkey, strKeyPath
End Sub
Kullanıcı avatarı
Haldun Alay
Site Dostu
 
Adı Soyadı:Haldun Alay
Kayıt: 15 Haz 2008 00:14
Konum: Rakım 0
Meslek: Turizm
Yaş: 49
İleti: 1241
 
Cinsiyet: Bay
Bulunduğunuz İl / Semt: Aydın/Kuşadası

Cevap: Registry'de Silme (Alt Kütüklerle beraber - Deltree g

İleti#8)  Enemy » 01 Mar 2011 18:59

Haldun Bey;

Teşekkürler. Verdiğiniz kodlar işimi gördü. Çok sağolun. Başarılarınızın devamını dilerim.
Kullanıcı avatarı
Enemy
 
Adı Soyadı:Ersin Kibrit
Kayıt: 24 Arl 2009 23:49
Konum: Zonguldak
Meslek: Stoker
Yaş: 55
İleti: 9
 
Cinsiyet: Bay
Bulunduğunuz İl / Semt: Zonguldak

Cevap: Registry'de Silme (Alt Kütüklerle beraber - Deltree g

İleti#9)  Tarkan VURAL » 03 Mar 2011 12:17

Haldun, süpersin. :) Daha önce söylemiş miydim ? ;)
Resim
www.tarkanvural.com.tr

İnnâ lillâhi ve innâ ileyhi raciûn
Şüphesiz ki; biz Allah’a âidiz ve vakti geldiğinde O’na döndürüleceğiz.

HasbunAllâhu ve nimel vekîl
Bize Allah yeter. O ne güzel vekildir.


ExcelVBA.NET' e katkıda bulunmak ister misiniz ? O halde BAĞIŞ butonunu tıklayın...
Kullanıcı avatarı
Tarkan VURAL
Yönetim Kurulu
 
Adı Soyadı:Tarkan VURAL
Kayıt: 14 Haz 2008 18:27
Konum: @tarkanvural73
Meslek: LUU, Database Expert, Senior Software Specialist, Developer
Yaş: 46
İleti: 27135
 
Cinsiyet: Bay
Bulunduğunuz İl / Semt: İstanbul - Beylikdüzü

Cevap: Cevap: Registry'de Silme (Alt Kütüklerle beraber - De

İleti#10)  Haldun Alay » 03 Mar 2011 12:31

Tarkan VURAL yazdı:Haldun, süpersin. :) Daha önce söylemiş miydim ? ;)
[TESEKKÜR] --)( [op]
Kullanıcı avatarı
Haldun Alay
Site Dostu
 
Adı Soyadı:Haldun Alay
Kayıt: 15 Haz 2008 00:14
Konum: Rakım 0
Meslek: Turizm
Yaş: 49
İleti: 1241
 
Cinsiyet: Bay
Bulunduğunuz İl / Semt: Aydın/Kuşadası

Cevap: Registry'de Silme (Alt Kütüklerle beraber - Deltree g

İleti#11)  sefer_50 » 03 Mar 2011 22:04

Haldun bey rica etsem kodlar hakkında kısaca bir özet bilgi geçmeniz mümkün mü?..Gerçekten anlamak için çok uğraşıyorum ama elimdeki mevcut kaynakalara da bakıyorum sizin yazdığınız kodların çoğunun temel olarak ne işlev üstlendikleri hakkında bilgiye ulaşamıyorum..Ki zaten buradan hareketle de aldığım kaynağı sorgulamıyor da değilim..Ama hangi kaynağın içeriğini kontrol etsem benzer içeriklere de sahip..Böyle form üzerinde paylaşılan kodlar mevcut değil...Eğer mümkünse tabi; kodların kısaca açıklamasını yaparsanız çok memnun olurum.
Kullanıcı avatarı
sefer_50
Yeni Başlamış
 
Adı Soyadı:sefer Dölen
Kayıt: 13 Tem 2010 08:29
İleti: 49
 
Cinsiyet: Bay
Bulunduğunuz İl / Semt: Aydın / SÖKE

Cevap: Registry'de Silme (Alt Kütüklerle beraber - Deltree g

İleti#12)  Tarkan VURAL » 08 Mar 2011 11:38

Değişkenlerin taşıyacağı değerler ile ilgili bir kayıt deseni oluşturuluyor.

Enum HkeyTypes
HKEY_CLASSES_ROOT = &H80000000
HKEY_CURRENT_USER = &H80000001
HKEY_LOCAL_MACHINE = &H80000002
HKEY_USERS = &H80000003
HKEY_CURRENT_CONFIG = &H80000005
End Enum

Değişken nesne olarak bir ad tanımlanıyor.
Dim objRegistry As Object

Prosedür adı.
Private Sub DeleteKeyWithAllSubs()

Eğer hata verse de sonraki satırları okumaya devam et denmiş.
On Error Resume Next

İlgili değişkene nokta değeri atanmış
strComputer = "."

İlgili değişkene bir metin değeri atanmış.
strKeyPath = "KPD-Team"

Winmgmts nesnesi ile bir nesne değişkeni atanıyor.
Set objRegistry = GetObject("winmgmts:\\" & strComputer & "\root\default:StdRegProv")

Fonksiyon içerisine değişkenlerin taşıdığı değerler gönderilip işlenmesi istenmiş.
DeleteSubkeys HKEY_CURRENT_USER, strKeyPath

Prosedür bitmiş
End Sub

İki değişkenli bir fonksiyon tanımlanmış.
Private Sub DeleteSubkeys(Hkey As HkeyTypes, strKeyPath)

Önceki prosedürde oluşturulan nesnenin Enumkey özelliğine (bu özellik de fonksiyoneldir.) değişkenlerin taşıdığı değerler gönderiliyor.
objRegistry.EnumKey Hkey, strKeyPath, arrSubkeys

Eğer ilgili değişken bir dizi ise şartı soruluyor.
If IsArray(arrSubkeys) Then

Şart doğru ise, değişken bir dizi ise, dizi elemanları arasında bir döngü başlatılıyor.
For Each strSubkey In arrSubkeys

Eleman silmek ve dizi kontrol etmek için, kayıt yeniden fonksiyonun başına gönderiliyor.
DeleteSubkeys Hkey, strKeyPath & "\" & strSubkey

Dizi elemanları bitene kadar döngü devam ediyor, bittiğinde döngüden çıkılıyor.
Next

If şartının sonu.
End If

Alt dizi sahibi olmayan anahtarlar siliniyor.
objRegistry.DeleteKey Hkey, strKeyPath

Prosedür bitiyor.
End Sub
Resim
www.tarkanvural.com.tr

İnnâ lillâhi ve innâ ileyhi raciûn
Şüphesiz ki; biz Allah’a âidiz ve vakti geldiğinde O’na döndürüleceğiz.

HasbunAllâhu ve nimel vekîl
Bize Allah yeter. O ne güzel vekildir.


ExcelVBA.NET' e katkıda bulunmak ister misiniz ? O halde BAĞIŞ butonunu tıklayın...
Kullanıcı avatarı
Tarkan VURAL
Yönetim Kurulu
 
Adı Soyadı:Tarkan VURAL
Kayıt: 14 Haz 2008 18:27
Konum: @tarkanvural73
Meslek: LUU, Database Expert, Senior Software Specialist, Developer
Yaş: 46
İleti: 27135
 
Cinsiyet: Bay
Bulunduğunuz İl / Semt: İstanbul - Beylikdüzü

Cevap: Registry'de Silme (Alt Kütüklerle beraber - Deltree g

İleti#13)  sefer_50 » 08 Mar 2011 13:32

HKEY_CLASSES_ROOT = &H80000000
HKEY_CURRENT_USER = &H80000001
HKEY_LOCAL_MACHINE = &H80000002
HKEY_USERS = &H80000003
HKEY_CURRENT_CONFIG = &H80000005

Tarkan hocam özellikle bu şekilde tanımlama yapmanın anlamı nedir? Registry dizinleri özellikle bu şekilde mi tanımlanır(&H80000000... gibi)
Bir diğer soru hocam hiç görmediğim şu komutların temel işlevleri hakkında bilgi sahibi olabileceğim bir kaynak önerebilirmisiniz?
winmgmts, strSubkey, bu kodların ne yaptığı, nasıl bir işleve sahip olduğu ve hangi parametreleri aldığı hakkında bilgi sahibi olursam kodları anlmam daha kolay olacak sanırım.
Tabi herşeyden önce ilgi ve alkanızdan dolayı teşekkürlerimi sunuyorum..
Kullanıcı avatarı
sefer_50
Yeni Başlamış
 
Adı Soyadı:sefer Dölen
Kayıt: 13 Tem 2010 08:29
İleti: 49
 
Cinsiyet: Bay
Bulunduğunuz İl / Semt: Aydın / SÖKE

Cevap: Registry'de Silme (Alt Kütüklerle beraber - Deltree g

İleti#14)  Tarkan VURAL » 11 Mar 2011 17:49

Merhaba, strsubkey bir değişkendir. Diğer nesne ile ilgili öğretici bilgim yok. Haldun bey' den yardımcı olmasını rica edebiliriz.
Resim
www.tarkanvural.com.tr

İnnâ lillâhi ve innâ ileyhi raciûn
Şüphesiz ki; biz Allah’a âidiz ve vakti geldiğinde O’na döndürüleceğiz.

HasbunAllâhu ve nimel vekîl
Bize Allah yeter. O ne güzel vekildir.


ExcelVBA.NET' e katkıda bulunmak ister misiniz ? O halde BAĞIŞ butonunu tıklayın...
Kullanıcı avatarı
Tarkan VURAL
Yönetim Kurulu
 
Adı Soyadı:Tarkan VURAL
Kayıt: 14 Haz 2008 18:27
Konum: @tarkanvural73
Meslek: LUU, Database Expert, Senior Software Specialist, Developer
Yaş: 46
İleti: 27135
 
Cinsiyet: Bay
Bulunduğunuz İl / Semt: İstanbul - Beylikdüzü

Cevap: Registry'de Silme (Alt Kütüklerle beraber - Deltree g

İleti#15)  Haldun Alay » 20 Mar 2011 16:42

WMI, Windows Management Instrumentation (Windows Yönetim Araçları) kısaltmasıdır. SQL ile sorgulama yaparak bilgisayar, işletim sistemi, yüklü ve çalışan programlar, işlemler vs. hakkında detaylı bilgi alabilir, değişiklikler yapabilirsiniz. Ayrıca bir ağ sistemine dahil iseniz uzak bilgisayarlarda da belirttiğim işlemler yapılabilir.

WMI ile ilgili olarak internette ve Microsoft'un sitesinde detaylı bilgilere ulaşabilirsiniz.
http://www.google.com.tr/search?q=Windo ... umentation
http://msdn.microsoft.com/en-us/library ... 82(v=VS.85).aspx
http://timgolden.me.uk/python/wmi/index.html

Ayrıca daha önce WMI ile işlem kod örneklerini gönderdiğim konudaki kodları inceleyebilirsiniz.
http://www.excelvba.net/viewtopic.php?f=37&t=2099
Kullanıcı avatarı
Haldun Alay
Site Dostu
 
Adı Soyadı:Haldun Alay
Kayıt: 15 Haz 2008 00:14
Konum: Rakım 0
Meslek: Turizm
Yaş: 49
İleti: 1241
 
Cinsiyet: Bay
Bulunduğunuz İl / Semt: Aydın/Kuşadası


Forum Genel Makro Soruları

Online Kullanıcılar

Bu forumu görüntüleyenler: Kayıtlı kullanıcı yok ve 0 misafir

cron
Bumerang - Yazarkafe