Windows'da oturum açtığımda bir komut dosyasını otomatik olarak nasıl çalıştırabilirim?
Bilgisayarıma her giriş yaptığımda böyle bir şey çalıştırmak istiyorum:
echo %USERNAME% logged on at %DATE% %TIME% >> log.txt
Bonus, ekran koruyucunun kilidini açtığımda da aynı betiği çalıştırabilmekti.
Bilgisayarınızın kilidi açıldığında çalışacak zamanlanmış bir görev oluşturabilirsiniz:
Ayrıca, komut dosyasını okumak için yolu daralttım.
echo %USERNAME% logged on at %DATE% %TIME% >> %USERPROFILE%\log.txt
Zaten bir komut dosyanız varsa:
Bir kullanıcıya veya gruba oturum açma komut dosyası atamak için
Nerede? Sistem Araçları/Yerel Kullanıcılar ve Gruplar/Kullanıcılar
Başka bir deyişle, Microsoft'tan kullanışlı bir "HowTo" burada
Oturum açma komut dosyaları oluşturma
Bir kullanıcı belirli bir bilgisayarda oturum açtığında gerçekleştirilecek görevleri atamak için oturum açma komut dosyalarını kullanabilirsiniz. Komut dosyaları işletim sistemi komutlarını yerine getirebilir, sistem ortamı değişkenlerini ayarlayabilir ve diğer komut dosyalarını veya yürütülebilir programları çağırabilir. Windows Server 2003 ailesi iki komut dosyası ortamını destekler: komut işlemcisi, toplu iş dili komutlarını içeren dosyaları çalıştırır ve Windows Komut Dosyası Sistemi (WSH), Microsoft Visual Basic Komut Dosyası Sürümü (VBScript) veya Jscript komutlarını içeren dosyaları çalıştırır. Oturum açma komut dosyaları oluşturmak için bir metin düzenleyici kullanabilirsiniz. Genellikle oturum açma komut dosyaları tarafından gerçekleştirilen bazı görevler şunlardır:
WSH Network nesnesinin MapNetworkDrive yöntemini, WSH Network nesnesinin UserName özelliği ile birlikte arayarak H: sürücüsünü kullanıcının ana dizinine eşler. Geçerli kullanıcının ayırt edici adını elde etmek için ADSI IADsADSystemInfo nesnesini kullanır, bu da Active Directory'de karşılık gelen kullanıcı nesnesine bağlanmak için kullanılır. Bağlantı kurulduktan sonra, kullanıcının üyesi olduğu grupların listesi, kullanıcının memberOf özniteliği kullanılarak alınır. Çok değerli grup adları listesi, hedef grup adlarını aramayı kolaylaştırmak için VBScript'in Join işlevi kullanılarak tek bir dizeye birleştirilir.
Geçerli kullanıcı, betiğin üstünde tanımlanan üç gruptan birinin üyesiyse, komut dosyası kullanıcının G: sürücüsünü grup paylaşımlı sürücüyle eşleştirir ve kullanıcının varsayılan yazıcısını grup yazıcısı olarak ayarlar. Örnek bir oturum açma komut dosyası oluşturmak için
Aşağıdakileri kopyalayıp yapıştırın veya yazın:
Const ENGINEERING_GROUP = "cn=engineering"
Const FINANCE_GROUP = "cn=finance"
Const HUMAN_RESOURCES_GROUP = "cn=human resources"
Set wshNetwork = CreateObject("WScript.Network")
wshNetwork.MapNetworkDrive "h:",
"\\FileServer\Users\" & wshNetwork.UserName
Set ADSysInfo = CreateObject("ADSystemInfo")
Set CurrentUser = GetObject("LDAP://" &
ADSysInfo.UserName)
strGroups = LCase(Join(CurrentUser.MemberOf))
If InStr(strGroups, ENGINEERING_GROUP) Then
wshNetwork.MapNetworkDrive "g:",
"\\FileServer\Engineering\"
wshNetwork.AddWindowsPrinterConnection
"\\PrintServer\EngLaser"
wshNetwork.AddWindowsPrinterConnection
"\\PrintServer\Plotter"
wshNetWork.SetDefaultPrinter
"\\PrintServer\EngLaser"
ElseIf InStr(strGroups, FINANCE_GROUP) Then
wshNetwork.MapNetworkDrive "g:",
"\\FileServer\Finance\"
wshNetwork.AddWindowsPrinterConnection
"\\PrintServer\FinLaser"
wshNetWork.SetDefaultPrinter
"\\PrintServer\FinLaser"
ElseIf InStr(strGroups, HUMAN_RESOURCES_GROUP) Then
wshNetwork.MapNetworkDrive "g:",
"\\FileServer\Human Resources\"
wshNetwork.AddWindowsPrinterConnection
"\\PrintServer\HrLaser"
wshNetWork.SetDefaultPrinter
"\\PrintServer\HrLaser"
End If
Dosya menüsünde Farklı Kaydet'i tıklatın.
Düşünebildiğim en basit yol bunu başlangıç klasörünüzdeki bir .bat dosyasına koymak olacaktır.
Toplu iş dosyasını, kayıt defterine eklemek için daha karmaşık bir yol
HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run
kayıt defteri anahtarı.
Gerek yok! Windows zaten bunu sizin için günlüğe kaydetme mekanizması olay günlüğüne sahiptir. Olay kimliği 4624'tür (Vista öncesi sistemlerde 528).
Ekran kilitliyken/kilidi açıldığında bunun çalıştırılmasında kullanılıp kullanılamayacağını bilen var mı?
Windows 7 ve/veya Windows Server 2008 için bir yol var.
Görev Zamanlayıcı'yı kullanın, tetikleyici "Oturum açtığımda" kullandığından, yeni temel görev oluşturun.
İyi bir alternatif yöntem, içinde çalıştırmak istediğiniz komutlarla bir toplu iş dosyası oluşturmaktır. Ardından, makinedeki politika düzenleyicide oturum açma işleminin bir parçası olarak bir oturum açma komut dosyası çalıştırdığını belirteceksiniz. Kısa bir not, bu seçeneğin yalnızca ev sürümünde değil XP Pro'da kullanılabilir.