Vbs yi yönetici yetkilerinde çalıştıralım


Vbs yönetici yetkisi
Eğer windows 7 ve üzeri sistemlerde UAC (Kullanıcı hesabı denetimi) açıksa .vbs scriptleri tıkladığınızda çalışmayacaktır , bunların yönetici olarak çalıştırılmaları gerekir , gel gelelim gerek Windows 7 de

gerekse Windosw 8 ve 8.1 de herhangi bir .vbs scripte sağ tıkladığınızda Yönetici olarak çalıştır çıkmaz , shift tuşuna basılı tutup sağ tıklamanızda sonucu değiştirmeyecektir , elbette Kullanıcı hesabı denetimini kapatmak ilk akla gelen çözüm gibi de görünse sakıncaları sebebi ile kabuledilebilir bir çözüm sayılmayabilir , en azından arka planda bizden habersiz çalışmaya kalkan bir uygulama konusunda bizleri uyarması , yönetici olsak bile bir değişiklik yapmaya kalktığımızda onay sorması (ki yanlışlıkla yapılacak değişiklikler önlenmiş olur) ... gibi faydaları Kullanıcı hesabı denetiminin açık kalmasının gerekliliklerinden bazılarıdır , peki o halde ne yapabiliriz ?

1. .vbs için sağ tuşa yönetici olarak çalıştır eklemek : Böylece hem .vbs çalışmış olur hemde UAC yi kapatmak zorunda kalmayız , bunun için aşağıdaki .reg kaydını kullanabilirsiniz

Windows Registry Editor Version 5.00

[HKEY_CLASSES_ROOT\VBSFile\Shell\RunAs]
"HasLUAShield"=""

[HKEY_CLASSES_ROOT\VBSFile\Shell\RunAs\Command]
@=hex(2):22,00,25,00,53,00,79,00,73,00,74,00,65,00,6d,00,52,00,6f,00,6f,00,74,\
  00,25,00,5c,00,53,00,79,00,73,00,74,00,65,00,6d,00,33,00,32,00,5c,00,57,00,\
  53,00,63,00,72,00,69,00,70,00,74,00,2e,00,65,00,78,00,65,00,22,00,20,00,22,\
  00,25,00,31,00,22,00,20,00,25,00,2a,00,00,00

Eğer ilgili Reg kaydını varsayılan haline döndürmek istersek aşağıdaki kaydı kullanmamız gerekir

Windows Registry Editor Version 5.00

[-HKEY_CLASSES_ROOT\VBSFile\Shell\RunAs]

Bu kodları bir notepad e yapıştırıp ve Dosya – Farklı Kaydet… seçeneğine tıklayın

Farklı kaydet

Açılan pencerede herhangi bir isim verin (dosya ismi ve uzantısı kısmını isteğinize göre düzenleyin) ve .reg olarak kaydedip çalıştırın

Farklı kaydette dosya ismi ve uzantısı

sonuş aşağıdaki resimdeki gibi olacaktır , artık bir .vbs dosyasını sağ tıkladığınızda yönetici olarak çalıştır çıkacaktır

vbs yonetici olarak çalıştır

2. Her defasında sağ tıklayıp yönetici olarak çalıştır demek okadarda pratik birşey değildir , peki tıklandığında direkt yönetici olarak çalıştır onayı gelse çok daha iyi olmazmı ? işt .vbs kodumuzu aşağıdaki kodun Start of code ve End of code arasına yerleştirirsek (Aradaki kodu silerek) istediğimizi elde etmiş olur ve .vbs lerin Windows 7 ve üzerinde çalışmama sorununa çözüm bulmuş oluruz.

'--------------
'Start of UAC workaround code
If WScript.Arguments.length =0 Then
  Set objShell = CreateObject("Shell.Application")

  objShell.ShellExecute "wscript.exe", Chr(34) & _
  WScript.ScriptFullName & Chr(34) & " uac", "", "runas", 1
Else
'--------------
'Start of code
    WScript.Echo "This code is ran as an elevated user, ie. 'Administrator'"
'--------------
'End of code
'--------------
'End of UAC workaround code
End If

Eğer üstteki kod size karışık geldiyse aşağıdakini de kullanabilirsiniz

If Not WScript.Arguments.Named.Exists("elevate") Then
  CreateObject("Shell.Application").ShellExecute WScript.FullName _
    , WScript.ScriptFullName & " /elevate", "", "runas", 1
  WScript.Quit
End If
'esas kod bundan sonra gelecek

Fakat bu yönetici olarak çalıştır kodlarında şöyle bir sorun oluşabilir ; eğer Current directory (Mevcut disin) kulanmak isterseniz script System32 de işlem göreceği için mesela bir kopylama işleminde ilgili dosyayı/klasörü orada arayacak ve hata verecektir bundan kaçınmak için aşağıdaki kod işinizi görecektir

If WScript.Arguments.Named.Exists("elevated") = False Then
'Launch the script again as administrator
	CreateObject("Shell.Application").ShellExecute "wscript.exe", """" & WScript.ScriptFullName & """ /elevated", "", "runas", 1
	WScript.Quit
Else
'Change the working directory from the system32 folder back to the script's folder.
	Set oShell = CreateObject("WScript.Shell")
	oShell.CurrentDirectory = CreateObject("Scripting.FileSystemObject").GetParentFolderName(WScript.ScriptFullName)
End If
'Real code :

Yani üsttekini Mevcut dizin kodları bulunan Vbs scriptinde en başa kopyalar ve asıl kodlarınızı "Real code :" den sonra kullanırsanız script hem yönetici yetkilerinde çalışır hemde bulamadı hatası vermez.


21 Yorum Var
  1. Avatar for ömer taha
  2. Avatar for Velociraptor
  3. Avatar for ömer taha
  4. Avatar for Velociraptor
  5. Avatar for Mustafa Ateş
  6. Avatar for Velociraptor
  7. Avatar for birkan
  8. Avatar for Velociraptor
  9. Avatar for Barış
  10. Avatar for Caner
  11. Avatar for Velociraptor
  12. Avatar for Caner

Yorum Ekle

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

Captcha