Adminin kodladığı .VBS betiğini bir de biz haddimizi bilerek, irdeleyim.
Kod: Tümünü seç
Option Explicit
On Error Resume Next
Dim Wsh, Time1, Time2, Result, PathFile, MsgResult, MsgA, AppName, KeyA, KeyB, TimeDiff
MsgA = "Lütfen bütün açık uygulamaları kapatın ve TAMAM deyin."
KeyA = "HKEY_CURRENT_USER\Software\RestartTime\"
KeyB = "HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run\RestartTime"
AppName = "Yeniden başlama zamanını ölç"
Set Wsh = CreateObject("WScript.Shell")
PathFile = """" & WScript.ScriptFullName & """"
Result = wsh.RegRead(KeyA & "Times")
if Result = "" then
MsgResult = Msgbox (MsgA, vbOKCancel, AppName)
If MsgResult = vbcancel then WScript.Quit
Wsh.RegWrite KeyA & "Times", left(Time,8), "REG_SZ"
Wsh.RegWrite KeyB, PathFile, "REG_SZ"
Wsh.Run "cmd /c Shutdown -r -t 00", false, 0
else
Wsh.RegDelete KeyA & "Times"
Wsh.RegDelete KeyA
Wsh.RegDelete KeyB
TimeDiff = DateDiff("s",Result,left(Time,8))
MsgBox "Bilgisayarınızın yeniden baslatılması " & TimeDiff & " saniye surdu", VbInformation, AppName
end if
wscript.Quit
Önce Basit Açıklama :
1.Kayıt Defteri Kontrolü:
Betik, bilgisayarın kayıt defterinde daha önce kaydedilmiş bir zaman olup olmadığını kontrol ediyor. Eğer yoksa, kullanıcıdan tüm açık uygulamaları kapatmasını istiyor.
2.Kullanıcıdan Onay Alma:
Kullanıcı "Tamam" butonuna basarsa, mevcut zamanı kaydediyor ve bilgisayarı hemen yeniden başlatıyor. Eğer "İptal" butonuna basarsa, betik duruyor.
3.Zamanı Kaydetme:
Yeniden başlatma işlemi sırasında, mevcut zamanı kayıt defterine yazıyor. Bu, daha sonra süreyi hesaplamak için kullanılacak.
4.Yeniden Başlatma:
Bilgisayar hemen yeniden başlatılıyor.
5.Süre Hesaplama:
Eğer daha önce bir zaman kaydedilmişse, bu durumda yeniden başlatma süresini hesaplıyor ve kullanıcıya kaç saniye sürdüğünü gösteriyor.
Detaylı Basit Açıklama (kodun işleyişinin adım adım açıklanması) :
1.Değişken Tanımlamaları:
1.1.Wsh:
WScript.Shell nesnesini temsil eder, Windows komutlarını çalıştırmak ve kayıt defteri işlemleri yapmak için kullanılır.
1.2.Time1, Time2, Result, PathFile, MsgResult, MsgA, AppName, KeyA, KeyB, TimeDiff:
Çeşitli amaçlar için kullanılan değişkenlerdir.
1.3.MsgA:
Kullanıcıya gösterilecek mesajdır; tüm açık uygulamaların kapatılması gerektiğini belirtir.
1.4.KeyA ve KeyB:
Kayıt defteri anahtarlarının yollarını tanımlar. KeyA, yeniden başlatma zamanını saklamak için kullanılırken, KeyB betiğin otomatik olarak çalıştırılması için kullanılır.
2.Kayıt Defteri Okuma:
2.1.Result = wsh.RegRead(KeyA & "Times"):
Kayıt defterinden "Times" anahtarını okur. Eğer bu anahtar yoksa, Result boş bir değer alır.
3.Kullanıcıdan Girdi Alma:
3.1.Eğer Result değeri boşsa, kullanıcıya bir mesaj kutusu gösterilir (MsgBox), burada kullanıcıdan tüm açık uygulamaları kapatması istenir. Kullanıcı "Tamam" butonuna basarsa, kod devam eder; "İptal" butonuna basarsa, betik sonlanır (WScript.Quit).
4.Kayıt Defterine Yazma (kodun kalbi burası) :
4.1.Kullanıcı "Tamam" dedikten sonra, mevcut zamanı kayıt defterine yazar (Wsh.RegWrite KeyA & "Times", left(Time,8), "REG_SZ"). Ayrıca, betiğin kendisini otomatik olarak çalıştırmak için kayıt defterine ekler (Wsh.RegWrite KeyB, PathFile, "REG_SZ").
5.Bilgisayarı Yeniden Başlatma:
5.1.Wsh.Run "cmd /c Shutdown -r -t 00", false, 0:
Bilgisayarı hemen yeniden başlatmak için bir komut çalıştırır.
6.Zaman Farkını Hesaplama (zamanı nasıl hesaplıyor sorunun cevabı) :
6.1.Eğer Result değeri boş değilse, bu durumda daha önce kaydedilmiş zaman ile mevcut zaman arasındaki farkı hesaplar
(TimeDiff = DateDiff("s",Result,left(Time,8)))
7.Sonuç Mesajı Gösterme:
Kullanıcıya bilgisayarın yeniden başlatılmasının ne kadar sürdüğünü gösteren bir mesaj kutusu açar.
7.Betik Sonlandırma:
7.1.wscript.Quit:
Betiği sonlandırır.
Özetle ;
Bu betik, bilgisayarın yeniden başlatılma süresini ölçmek ve bu süreyi kullanıcıya bildirmek için kullanılabilmekte olup ayrıca, bilgisayarın yeniden başlatılmasını otomatikleştirmek için kayıt defterine ekleme yapar.