Ich hab vor ein paar Wochen mal eine Kindersicherung gemacht und wollte diese jetzt mal vorstellen.
Kindersicherung.au3/.exe:
Man kann bis zu 5 Prozesse (werd ich wahrscheinlich noch erweitern) prüfen lassen. Sobald diese vorhanden sind, werden sie automatisch geschlossen. Welche Prozesse geprüft werden, wird in einer *.ini ausgelesen. Während das Script läuft, ist der Taskmanager geblockt. Außerdem prüft sie, ob die Prüfer.au3/.exe noch läuft. Dabei ist egal, wie die Check.au3/.exe heißt und wo sie sich befindet.
Optionen.au3/.exe:
Wenn noch kein "Account" vorhanden ist, kommt man automatisch zu einem Fenster, wo man einen neuen erstellen kann. Nach der Erstellung kommt man in die Optionen GUI. Passwort und Benutzername werden Md5 verschlüsselt gespeichert. Wenn man schon einen "Account" hat, muss man sich anmelden, um zur Optionen Gui zu gelangen. In der Gui kann man dann einstellen, welche Prozesse geschlossen werden sollen, ob das Script bei jedem Systemstart mit gestartet werden soll, man kann die Login Daten ändern und sowohl die Kindersicherung.au3/.exe als auch die Check.au3/.exe beenden. Die Optionen.au3/.exe lässt sich zudem nur mit Adminrechten ausführen.
Check.au3/.exe
Die Prüfer.au3/.exe prüft nur, ob die Kindersicherung.au3/.exe noch läuft. Der Name und der Pfad der Kindersicherung.au3/.exe ist dabei egal.
Kindersicherung.au3:
Spoiler anzeigen
#Region ;**** Directives created by AutoIt3Wrapper_GUI ****
#AutoIt3Wrapper_outfile=..\AutoIt .exe\Kindersicherung.exe
#AutoIt3Wrapper_Res_Fileversion=1.0.0.0
#AutoIt3Wrapper_Res_LegalCopyright=JanTimon
#AutoIt3Wrapper_Res_Language=1031
#EndRegion ;**** Directives created by AutoIt3Wrapper_GUI ****
TraySetState(2)
$configdir=@CommonFilesDir&"\configkill"
RegWrite("HKEY_CLASSES_ROOT\krsung", "Exit", "REG_SZ", "krsungon")
If @ScriptFullPath <> RegRead("HKEY_CLASSES_ROOT\krsung", "ScriptSavePath") Then RegWrite("HKEY_CLASSES_ROOT\krsung", "ScriptSavePath", "REG_SZ", @ScriptFullPath)
If @ScriptName <> RegRead("HKEY_CLASSES_ROOT\krsung", "ScriptSaveName") Then RegWrite("HKEY_CLASSES_ROOT\krsung", "ScriptSaveName", "REG_SZ", @ScriptName)
While sleep(60)
If RegRead("HKEY_CLASSES_ROOT\krsung", "Exit")<>"krsungoff" Then
If NOT ProcessExists(RegRead("HKEY_CLASSES_ROOT\krsung", "ScriptCheckName")) Then ShellExecute(RegRead("HKEY_CLASSES_ROOT\krsung", "ScriptCheckPath"))
EndIf
If RegRead("HKEY_CLASSES_ROOT\krsung", "Exit")="krsungoff" Then Exit
If ProcessExists(IniRead($configdir, "ProcessClose", "Process1", "ERROR")) Then $pro1=ProcessClose(IniRead($configdir, "ProcessClose", "Process1", "ERROR"))
If ProcessExists(IniRead($configdir, "ProcessClose", "Process2", "ERROR")) Then $pro2=ProcessClose(IniRead($configdir, "ProcessClose", "Process2", "ERROR"))
If ProcessExists(IniRead($configdir, "ProcessClose", "Process3", "ERROR")) Then $pro3=ProcessClose(IniRead($configdir, "ProcessClose", "Process3", "ERROR"))
If ProcessExists(IniRead($configdir, "ProcessClose", "Process4", "ERROR")) Then $pro4=ProcessClose(IniRead($configdir, "ProcessClose", "Process4", "ERROR"))
If ProcessExists(IniRead($configdir, "ProcessClose", "Process5", "ERROR")) Then $pro5=ProcessClose(IniRead($configdir, "ProcessClose", "Process5", "ERROR"))
If IniRead($configdir, "Other", "Autostart", "1") = "1" Then
If NOT FileExists(@StartupCommonDir&@ScriptName) Then FileCopy(@ScriptFullPath, @StartupCommonDir)
ElseIf IniRead($configdir, "Other", "Autostart", "0") = "0" Then
If FileExists(@StartupCommonDir&@ScriptName) Then FileDelete(@StartupCommonDir&@ScriptName)
EndIf
If ProcessExists("taskmgr.exe") Then ProcessClose("taskmgr.exe")
WEnd
Optionen.au3:
Spoiler anzeigen
#Region ;**** Directives created by AutoIt3Wrapper_GUI ****
#AutoIt3Wrapper_outfile=..\AutoIt .exe\Optionen.exe
#AutoIt3Wrapper_Res_Fileversion=1.0.0.0
#AutoIt3Wrapper_Res_LegalCopyright=JanTimon
#AutoIt3Wrapper_Res_Language=1031
#EndRegion ;**** Directives created by AutoIt3Wrapper_GUI ****
#include <EditConstants.au3>
#include <GUIConstants.au3>
#include <Crypt.au3>
If IsAdmin()=0 Then
MsgBox(0, "ERROR", "Sie können nur mit Adminrechten diese Datei öffnen.")
Exit
EndIf
$configdir=@CommonFilesDir&"\configkill"
[/autoit] [autoit][/autoit] [autoit]$lGUI = GUICreate("Login", 214, 114, 193, 125)
$ID = GUICtrlCreateInput("Benutzername", 80, 8, 113, 21)
GUICtrlCreateLabel("Benutzername:", 8, 8, 55, 21)
GUICtrlCreateLabel("Passwort:", 8, 48, 53, 21)
$PW = GUICtrlCreateInput("Passwort", 80, 48, 113, 21, BitOR($ES_PASSWORD,$ES_AUTOHSCROLL))
$bLogin = GUICtrlCreateButton("Login", 24, 80, 169, 25, 0)
$cGUI = GUICreate("Login", 214, 114, 193, 125)
$cID = GUICtrlCreateInput("Benutzername", 80, 8, 113, 21)
GUICtrlCreateLabel("Benutzername:", 8, 8, 55, 21)
GUICtrlCreateLabel("Passwort:", 8, 48, 55, 21)
$cPW = GUICtrlCreateInput("Passwort", 80, 48, 113, 21, BitOR($ES_PASSWORD,$ES_AUTOHSCROLL))
$cbLogin = GUICtrlCreateButton("Account erstellen", 24, 80, 169, 25, 0)
If IniRead($configdir, "Login", "Username", "ERROR") <> "ERROR" And IniRead($configdir, "Login", "Passwort", "ERROR") <> "ERROR" Then
GUISetState(@SW_SHOW, $lGUI)
Else
GUISetState(@SW_SHOW, $cGUI)
EndIf
$oGUI = GUICreate("Optionen", 272, 266, 193, 125)
GUICtrlCreateLabel("Prozessname oder PID:", 8, 16, 115, 17)
$p1 = GUICtrlCreateInput("", 144, 16, 105, 21)
GUICtrlCreateLabel("Prozessname oder PID:", 8, 53, 115, 17)
$p2 = GUICtrlCreateInput("", 144, 53, 105, 21)
GUICtrlCreateLabel("Prozessname oder PID:", 8, 90, 115, 17)
$p3 = GUICtrlCreateInput("", 144, 90, 105, 21)
GUICtrlCreateLabel("Prozessname oder PID:", 9, 127, 115, 17)
$p4 = GUICtrlCreateInput("", 145, 127, 105, 21)
GUICtrlCreateLabel("Prozessname oder PID:", 9, 164, 115, 17)
$p5 = GUICtrlCreateInput("", 145, 164, 105, 21)
$astart = GUICtrlCreateCheckbox("Das Programm bei jedem Computerstart mit starten", 8, 200, 257, 17)
$changeo = GUICtrlCreateButton("Ändern", 8, 232, 65, 25, 0)
$changel = GUICtrlCreateButton("Login Daten ändern", 88, 232, 113, 25, 0)
$exit = GUICtrlCreateButton("Beenden", 208, 232, 49, 25)
While True
Switch GUIGetMsg()
Case $GUI_EVENT_CLOSE
Exit
Case $bLogin
$checkid = _Crypt_HashData(GUICtrlRead($ID), $CALG_MD5)
$checkpw = _Crypt_HashData(GUICtrlRead($PW), $CALG_MD5)
If IniRead($configdir, "Login", "Username", "ERROR") = $checkid And IniRead($configdir, "Login", "Passwort", "ERROR") = $checkpw Then
GUISetState(@SW_HIDE, $lGUI)
MsgBox(64, "Erfolgreich", "Erfolgreich eingeloggt")
options()
Else
GUISetState(@SW_HIDE, $cGUI)
MsgBox(48, "Fehlgeschlagen", "Login Fehlgeschlagen")
EndIf
Case $cbLogin
IniWrite($configdir, "Login", "Username", _Crypt_HashData(GUICtrlRead($cID), $CALG_MD5))
IniWrite($configdir, "Login", "Passwort", _Crypt_HashData(GUICtrlRead($cPW), $CALG_MD5))
MsgBox(64, "Erfolgreich", "Account wurde erfolgreich erstellt")
Call("options")
Case $changel
IniDelete($configdir, "Login")
GUISetState(@SW_SHOW, $cGUI)
Case $changeo
IniWrite($configdir, "ProcessClose", "Process1", GUICtrlRead($p1))
IniWrite($configdir, "ProcessClose", "Process2", GUICtrlRead($p2))
IniWrite($configdir, "ProcessClose", "Process3", GUICtrlRead($p3))
IniWrite($configdir, "ProcessClose", "Process4", GUICtrlRead($p4))
IniWrite($configdir, "ProcessClose", "Process5", GUICtrlRead($p5))
If GUICtrlRead($astart) = $GUI_Checked Then
IniWrite($configdir, "Other", "Autostart", "1")
Else
IniWrite($configdir, "Other", "Autostart", "0")
EndIf
Exit
Case $exit
RegWrite("HKEY_CLASSES_ROOT\krsung", "Exit", "REG_SZ", "krsungoff")
sleep(500)
RegWrite("HKEY_CLASSES_ROOT\krsung", "Exit", "REG_SZ", "krsungon")
EndSwitch
WEnd
Func options()
GUISetState(@SW_SHOW, $oGUI)
EndFunc
Check.au3:
Spoiler anzeigen
If @ScriptFullPath <> RegRead("HKEY_CLASSES_ROOT\krsung", "ScriptCheckPath") Then RegWrite("HKEY_CLASSES_ROOT\krsung", "ScriptCheckPath", "REG_SZ", @ScriptFullPath)
If @ScriptName <> RegRead("HKEY_CLASSES_ROOT\krsung", "ScriptCheckName") Then RegWrite("HKEY_CLASSES_ROOT\krsung", "ScriptCheckName", "REG_SZ", @ScriptName)
While sleep(10)
If RegRead("HKEY_CLASSES_ROOT\krsung", "Exit")="krsungoff" Then Exit
If RegRead("HKEY_CLASSES_ROOT\krsung", "Exit")<>"krsungoff" Then
If NOT ProcessExists(RegRead("HKEY_CLASSES_ROOT\krsung", "ScriptSaveName")) Then ShellExecute(RegRead("HKEY_CLASSES_ROOT\krsung", "ScriptSavePath"))
EndIf
WEnd
Kindersicherung.exe: http://www.file-upload.net/download-25182…herung.exe.html
Optionen.exe: http://www.file-upload.net/download-2517834/Optionen.exe.html
Check.exe: http://www.file-upload.net/download-2518238/Check.exe.html
Vorschläge und konstruktive Kritik sind gerne gesehen..
Wichtig: Wenn eure Einstellungen bei SciTE so sind, dass ein Script standartmäßig editiert wird, dann solltet ihr lieber nicht die Check.au3/Kindersicherung.au3 laufen lassen. Weil sonst bleibt euch nichts anderes übrig, als den Pc auszuschalten, weil dauerhaft die .au3 in den Vordergrund geholt wird. Optional könnt ihr auch einfach den Teil mit dem automatischen restart auskommentieren.