Vbs ile bir registry anahtarını alt anahtarı ile silelim


Vbs ile bir registry anahtarını silmek
Microsoftun anlamsız şekilde Powershell i kullandırtmaya çalışması nafile bir çaba gibi görünüyor oysa çok daha kaliteli ve bizzat Microsofun işletim sisteminde kullandığı Vbs hem daha hızlı hem daha zahmetsiz

hemde çok daha esnektir. Visual basic Script yazıp bir registry anahtarını sildirtebiliriz , böylece hem .reg uzantılı dosyanın çalışması istenen 2-3 onaydan kurtulmuş oluruz hemde registry kaydını şifreli vbs olan vbe sayesinde gizleyebiliriz. Elbetteki VBS bir script dili olduğu için gerçek bir koruma sağlamaz ve şifreli kodlar kolayca çözülebilir fakat en azından kodların acemi gözlerden korunmasını sağlayacaktır. Eğer bir VBS ile sildirteceğimiz anahtar bir alt anahtara sahipse bunu ne şekilde silebiliriz ? , bu konuda birden fazla yöntem mevcuttur aşağıdaki örneğimizde Sordum anahtarını ve ona ait alt anahtarı nasıl sildirtebiliriz örnekleri ile açıklamaya çalışacağız.

Registry Alt anahtarı

Eğer alt anahtarı olmasaydı aşağıdaki şekilde anahtarı silebilecektik.

Set objShell = Wscript.CreateObject("Wscript.Shell")
objShell.RegDelete ("HKEY_CURRENT_USER\AppEvents\Schemes\Sordum\")

Elbetteki kodları önce alt anahtarı sonrada üst anahtarı silecek şekilde hazırlayıp kullanabiliriz peki ya alt alta onlarca alt anahatarı varsa ? bu durumda bu yol hiçte pratik olmayacaktır.Üstteki kodlarla resimdeki Sordum anahtarını tüm alt anahtarları ile birlikte silmeye kalkarsak aşağıdaki hatayı verecektir.

Registry silme hatası

Microsoft bu tür durumlar için aşağıdaki kodu kullanmamızı önermektedir bu uzun kod Sordum anahtarını tüm alt anahtarları ile birlikte silecektir gel gelelim düzenlenmesi bir sonraki vereceğimiz yöntemden daha külfetlidir çünkü her bir Ana dal için kullanıcak kod farklı olabilecektir mesela örneğimizde "HKEY_CURRENT_USER = &H80000001" kullanıldı fakat sileceğimiz anahtar HKEY_CLASSES_ROOT a bağlı bir registry anahtarı olsaydı bu durumda H80000001 kodu farklı olacaktı. Gelelim silme koduna.

On Error Resume Next 

Const HKEY_CURRENT_USER = &H80000001 

strComputer = "."
strKeyPath = "AppEvents\Schemes\Sordum" 

Set objRegistry = GetObject("winmgmts:\\" & _
    strComputer & "\root\default:StdRegProv") 

DeleteSubkeys HKEY_CURRENT_USER, strKeypath 

Sub DeleteSubkeys(HKEY_CURRENT_USER, strKeyPath) 
    objRegistry.EnumKey HKEY_CURRENT_USER, strKeyPath, arrSubkeys 

    If IsArray(arrSubkeys) Then 
        For Each strSubkey In arrSubkeys 
            DeleteSubkeys HKEY_CURRENT_USER, strKeyPath & "\" & strSubkey 
        Next 
    End If 

    objRegistry.DeleteKey HKEY_CURRENT_USER, strKeyPath 
End Sub

Eğer Üstteki Kod uzun ve karmaşık geliyor ise Reg.exe yöntemi ile çok daha kısa kod bloğu kullanıp Bir anahtarı ve onun tüm alt anahtarlarını sildiretebiliriz.

Dim objShell
Set objShell = WScript.CreateObject( "WScript.Shell" )
objShell.Run """Reg.exe"" delete ""HKCU\AppEvents\Schemes\Sordum"" /f",0
Set objShell = Nothing

KOdları kullanırken Bazı anahtarlara erişim engellendi uyarısı alıyorsanız veya silme işlemini hiç yapmıyorsa scripti yönetici yetkilerinde çalışacak şekilde ayarlayıp deneyebilirsiniz. Bazı registry anahtarları sistem veya Trustedinstaller e ait olduklarından bunları yönetici yetkilerinde çalışan scriptler bile silemeyecektir. Böyle scriptleri Sizler için kodladığımız PowerRun isimli yazılım üzerinden çalıştırarak sonuca ulaşabilirsiniz.Aşağıdaki linkte üstteki kodların script hallerini bulabilirsiniz.

- Vbs de buton görevini yerine getirmiyor Burada

- Vbs de veriyi registry değeri ile karşılaştırma Burada

- Sağ tuş ile klasör ve dosyalara erişimi engelleme Burada

- Sağ tuşa program eklemeyi otomatikleştirmek Burada

- Tek satırda birden fazla komut çalıştırma Burada


4 Yorum Var

Yorum Ekle

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

Captcha