Kindersicherung

  • 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
    [autoit]

    #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)

    [/autoit] [autoit][/autoit] [autoit]

    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

    [/autoit]

    Optionen.au3:

    Spoiler anzeigen
    [autoit]

    #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 ****

    [/autoit] [autoit][/autoit] [autoit]

    #include <EditConstants.au3>
    #include <GUIConstants.au3>
    #include <Crypt.au3>

    [/autoit] [autoit][/autoit] [autoit]

    If IsAdmin()=0 Then
    MsgBox(0, "ERROR", "Sie können nur mit Adminrechten diese Datei öffnen.")
    Exit
    EndIf

    [/autoit] [autoit][/autoit] [autoit]

    $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)

    [/autoit] [autoit][/autoit] [autoit]

    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

    [/autoit] [autoit][/autoit] [autoit]

    Func options()
    GUISetState(@SW_SHOW, $oGUI)
    EndFunc

    [/autoit]

    Check.au3:

    Spoiler anzeigen
    [autoit]

    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

    [/autoit]


    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.

    6 Mal editiert, zuletzt von Ineluki (16. Mai 2010 um 08:29)

  • Soetwas ähnliches habe ich auch schonmal gemacht und eine Kindersicherung habe ich auch schon mal geplant, aber nie gemacht. Meine gemachten Tools waren Autostart gemacht und blockten alles bis ein bestimmtes Passwort eingegebn wurde (auch der Taskmanager). Davon hatte ich mehrere, die bessere Methode habe ich allerdings durch halben Zufall gemacht.
    Zu deinem Script:
    Es sieht schon ganz gut aus, aber ich hätte noch Countdown reingebaut, damit man einstellen kann, wie lange man dann an haben kann.

    EDIT: Ohne den Code für den einen Teil werden es wenig ausführen, trotzdem darfst du es nicht reinstellen :D Naja gut das du die Regeln gelesen hast :P

    Einmal editiert, zuletzt von TheShadowAE (15. Mai 2010 um 13:03)

  • So, ich hab jetzt noch eine 3. Datei hinzugefügt. Diese verhindert, dass das Script beendet wird.
    Aber: 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.