Desktopsperre per USB-Stick

    • Offizieller Beitrag

    Desktop per USB-Stick zu sperren/entsperren.

    Version 1.7 ( 11.05.14 )
    - Man kann jetzt mehrere USB-Sticks registrieren. Wenn einer der registrierten USB-Sticks eingesteckt wird, ist der Rechner freigeschaltet.
    - Die Inidatei ist jetzt anders aufgebaut. Eine evtl. vorhandene Inidatei wird gelöscht und die Registrierung eines/mehrerer USB-Sticks muss neu vorgenommen werden!
    - Der Schriftzug "GESPERRT" wurde durch das Programmicon ersetzt (sieht schöner aus IMHO).
    - Außerdem wird jetzt auch der Mauszeiger über den Bildschirm bewegt, wenn der Rechner gesperrt ist (Bildschirmschoner).

    Version 1.6 ( 10.05.14 )
    - Fehler beim registrieren des USB-Sticks. Die Sperre wurde auch dann ausgelöst, wenn man gar keinen Stick registriert hat. Bug behoben, danke Cheater Dieter!
    - Vorschläge von Cheater Dieter eingebaut. Vielen Dank!

    Version 1.5 ( 10.05.14 )
    - Funktioniert jetzt auch mit mehreren Monitoren. Der "GESPERRT"-Schriftzug wird auf dem Hauptbildschirm angezeigt.
    - Der "GESPERRT"-Schriftzug wird nun während der Anzeige im Kreis bewegt (Bildschirmschoner).

    Version 1.4 ( 09.05.14 )
    - Anpassungen vorgenommen (läuft jetzt auch unter AutoIt v3.3.10.2).
    - BlockInput, MouseTrap und das deaktivieren des TaskManagers finden jetzt innerhalb der Sleep-Schleife statt, damit wird verhindet, dass man unter Windows7 den Schutz umgehen kann.
    - Die Registrierung des USB-Stick kann man nun auch Abbrechen und die Erkennungsschleife besitzt jetzt einen Timer.

    Version 1.3 ( 03.06.10 )
    - Die Inidatei befindet sich nun in @AppDataDir & '\Desktopsperre\'
    - AutoRun für Wechseldatenträger wird beim Lock abgeschaltet (bei Unlock wiederhergestellt)
    - Abmeldeversuch bei Lock führt zu einem Shutdown
    - Programmicon geändert

    Version 1.2 ( 03.06.09 )
    Es gibt jetzt nur noch ein Programm. Beim ersten Start wird nach einem USB-Stick zum sperren/entsperren gefragt. Man kann später noch weitere USB-Sticks hinzufügen.
    Der Taskmanager wird nun in der Registry abgeschaltet (Danke, BugFix für die Funktion).
    Es gibt jetzt auch einen "Gesperrt"-Bildschirm. Wer das nicht haben will, sondern wieder Monitor AUS, der kann die auskommentierten Befehle benutzen.
    Programm, Script und Icon in dem ZIP-Archiv (Anhang).

  • Weiß nicht, wofür ich es gebrauchen könnte. Ist aber ein lustiger Effekt. Kann man die Desktopsperre nicht aber mit BlockInput() oder ähnlichen Funktionen effektiver gestalten?

  • sicher könnte man auch blockinput verwenden um maus und tasterrut zu sperren aber es heißt da desktop sperre und nicht pc sperre, oda? ;)

    • Offizieller Beitrag
    Zitat

    Original von unearth
    Weiß nicht, wofür ich es gebrauchen könnte. Ist aber ein lustiger Effekt. Kann man die Desktopsperre nicht aber mit BlockInput() oder ähnlichen Funktionen effektiver gestalten?

    Bei Verwendung von "nur" BlockInput() kannst Du immer noch [Strg] [Alt] [Entf] drücken, dann den Taskmanager starten und mit der Maus den "Desktopsperre"-Task killen.

    Mein Script hingegen läßt diese Möglichkeit nicht zu. Der PC ist so lange gesperrt bis man den entsprechenden USB-Stick wieder einsteckt oder den PC neu startet (man könnte das Script natürlich in den Autostart packen, dann wäre auch das verhindert).

    MfG. Oscar

  • Hm, habe es vorher mit der 3.2 Comp. da ging es.

    Jetzt habe ich das mit der 3.3 versucht, da kommt gleich fehlermeldung.

    2 an der zahl :

    Code
    sperren.au3(13,59) : WARNING: $WS_POPUP: possibly used before declaration.
    $gui = GUICreate($gui_titel, -1, -1, 0, 0, BitOr($WS_POPUP,

    Gleiche meldung für Maximize.
    Warum denn das ?

    Achja und Der Taskmanager geht trotzdem bei deinem Scipt.
    Also mit STRG-Alt-Entf öffne ich den Taskmanager, zwar ohne Maus aber sobald ich den Process abschiesse geht sie wieder.

    MfG echt Cooles Skript, So ein Splash noch eingebunden und den Taskmanager wirklich abschalten und noch ne 2te ID zur sicherung rein dann ist es echt brauchbar :)

    • Offizieller Beitrag

    Hallo,

    die Includes haben sich etwas geändert Du musst noch

    [autoit]

    #include <WindowsConstants.au3>

    [/autoit]

    hinzufügen!

  • Hallo Oscar


    Nicht schlecht dein Script.

    Guter Effekt.

    Auch wenn ich denke, es macht nicht allzu viel Sinn.


    Leider funktioniert es mit 2 Monitoren nicht richtig.


    Gruss Roger

  • Hallo Oscar.

    Idee: Super

    Ich habe noch zwei Verbesserungsvorschläge, wobei der erste umsetzbar ist, beim zweiten bin ich mir nicht ganz sicher.

    1.) Hintertürchen
    Das mann evtl. noch mit einem Passwort den Desktop wieder frei geben kann. Ist gut, wenn man anderen (na klar nur Admin's) schnell mal telefonisch sagen kann, wie sie rein kommen, wenn sie an den PC müssen.

    2.) USB-Stick angeschlossen?
    Es wird ja gesagt, das man den Stick anziehen soll und bestätigen soll. Wenn man es nicht macht, sondern ausversehen doppelt ENTER drückt und dann den Stick anzieht, dann bleibt einen nur den PC neu zu starten. Also wäre es irgendwie schon wichtig zu schauen, ob dr Stick auch wirklich abgezogen wurde oder wenn man aufgefordert wird das Wort "JA" in ein Inputfeld zu schreiben, wenn der Stick abgezogen ist. Wer dann noch so blond ist und "JA " schreibt, wobei der Stick noch drinne ist, der soll sofort brünett werden. ;)

    Wie geschrieben, es sind Verbesserungsvorschläge und nicht negativ gemeint.

    Lieben Gruß,
    Alina

    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

    Geheime Information: ;)
    OuBVU5ebLhHu5QvlnAyQB4A7SzBrvWulwL7RLl2BdH5tI6sIYspeMKeXMSXl

  • Also bei mir klappts auf Vista Home Premium 64bit super!
    Man kann zwar STRG + ALT + ENTF drücken, aber den Task Manager kann man nicht wählen. Echt geil das Script. Ist eine Art Hardware Passwort.

  • Also ich find das Teil echt super! :D

    Aber warum bitte #RequireAdmin? Funktioniert doch auch ohne. ^^

    Und wegen dem TaskManager:

    Spoiler anzeigen
    [autoit]

    ;~ #RequireAdmin
    #Region ;**** Directives created by AutoIt3Wrapper_GUI ****
    #AutoIt3Wrapper_icon=Desktopsperre.ico
    #AutoIt3Wrapper_outfile=Desktopsperre.exe
    #AutoIt3Wrapper_Compression=4
    #AutoIt3Wrapper_Res_Fileversion=1.2.0.0
    #AutoIt3Wrapper_Res_LegalCopyright=Oscar
    #AutoIt3Wrapper_Res_Language=1031
    #EndRegion ;**** Directives created by AutoIt3Wrapper_GUI ****
    #include <StaticConstants.au3>
    #include <GUIConstantsEx.au3>
    #include <MenuConstants.au3>
    #include <SendMessage.au3>
    #include <WindowsConstants.au3>
    #include <Misc.au3>

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

    Opt('GUICloseOnESC', 0)
    Opt('TrayAutoPause', 0)
    Opt('TrayMenuMode', 1)
    Opt('TrayOnEventMode', 1)
    Opt('GUIOnEventMode', 1)

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

    Global $sTitle = 'Desktopsperre v1.2'
    If _Singleton($sTitle, 1) = 0 Then
    MsgBox(48, $sTitle, 'Das Programm läuft bereits!')
    Exit
    EndIf
    Global $sIni = @ScriptDir & '\Desktopsperre.ini'
    If Not IsDeclared('WM_DEVICECHANGE') Then Global Const $WM_DEVICECHANGE = 0x0219
    Global Const $Off = 2, $On = -1
    Global $hMonitor = WinGetHandle('classname=Progman')
    Global $bLock = False
    Global $usbstor = 'HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\usbstor\Enum'
    RegRead($usbstor, 'count')
    If @error Then Exit MsgBox(48, $sTitle, 'Konnte Registryeintrag nicht lesen!')

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

    Global $sID = IniRead($sIni, 'ID', '1', '')
    If $sID = '' Then _RegID()
    TraySetIcon(@ScriptDir & '\Desktopsperre.ico')
    TrayCreateItem('USB-Stick registrieren')
    TrayItemSetOnEvent(-1, '_RegID')
    TrayCreateItem('')
    TrayCreateItem('Programm beenden')
    TrayItemSetOnEvent(-1, '_End')

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

    $hGui = GUICreate($sTitle, @DesktopWidth, @DesktopHeight, 0, 0, $WS_POPUP, $WS_EX_TOOLWINDOW)
    GUISetBkColor(0x000000)
    GUICtrlCreateLabel('GESPERRT', @DesktopWidth/2-160, @DesktopHeight/2-30, 320, 60, $SS_CENTER)
    GUICtrlSetFont(-1, 42, 600, 0, 'Arial')
    GUICtrlSetColor(-1, 0xEE4444)
    GUICtrlSetBkColor(-1, $GUI_BKCOLOR_TRANSPARENT)
    WinSetTrans($hGui, '', 245)
    GUIRegisterMsg($WM_DEVICECHANGE, 'MY_WM_DEVICECHANGE')

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

    While 1
    sleep(10)
    If $bLock() Then
    ;~ _ToggleMonitor($hMonitor, $Off)
    _MouseTrap(@DesktopWidth - 1, @DesktopHeight - 1, @DesktopWidth - 1, @DesktopHeight - 1); Maus in die untere, rechte Ecke setzen (einfrieren)
    WinKill("Windows Task-Manager")
    HotKeySet('!q'); Hotkey freigeben, damit das Programm nicht beendet werden kann
    _DisEnableTaskManager(1)
    If WinExists('Task-Manager') Then WinClose('Task-Manager'); evtl. geöffneten Task-Manager schliessen
    GUISetState(@SW_SHOW, $hGui)
    BlockInput(1)
    Else
    ;~ _ToggleMonitor($hMonitor, $On)
    _MouseTrap(); Maus wieder freigeben
    _DisEnableTaskManager(0)
    GUISetState(@SW_HIDE, $hGui)
    BlockInput(0)
    HotKeySet('!q', '_End'); Hotkey (ALT+q) zum beenden des Programms einrichten
    EndIf
    Wend; Schleife fortsetzen

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

    Func MY_WM_DEVICECHANGE($hWnd, $Msg, $wParam, $lParam)
    $bLock = True
    For $count = 0 To RegRead($usbstor, 'count') - 1; Schleife für alle USB-Wechseldatenträger
    If $sID = RegRead($usbstor, $count) Then $bLock = False
    Next
    EndFunc

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

    Func _RegID()
    Local $count
    MsgBox(0, $sTitle, 'Falls der USB-Stick momentan eingesteckt ist,' & @CRLF & 'bitte entfernen und dann auf [Ok] klicken!')
    $count = RegRead($usbstor, 'count')
    MsgBox(0, $sTitle, 'Bitte jetzt den USB-Stick einstecken!' & @CRLF & 'Er wird automatisch erkannt.', 5)
    While RegRead($usbstor, 'count') = $count
    Sleep(100)
    WEnd
    $count = RegRead($usbstor, 'count')
    $sID = RegRead($usbstor, $count - 1)
    IniWrite($sIni, 'ID', '1', $sID)
    MsgBox(0, $sTitle, 'Dieser USB-Stick ist nun zum ent-/sperren des Desktop registriert!', 5)
    EndFunc

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

    Func _End()
    If MsgBox(36, $sTitle, 'Programm beenden?') = 6 then Exit
    EndFunc

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

    Func _ToggleMonitor($hwnd, $OnOff)
    Local Const $WM_SYSCOMMAND = 0x0112
    Local Const $SC_MONITORPOWER = 0xF170
    _SendMessage($hWnd, $WM_SYSCOMMAND, $SC_MONITORPOWER, $OnOff)
    If @error Then Exit MsgBox(0, $sTitle, '_SendMessage Error: ' & @error)
    EndFunc

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

    ;===============================================================================
    ; Function Name: _DisEnableTaskManager([$DISABLE=1])
    ; Description:: TaskManager per Registry sperren / entsperren
    ; Parameter(s): $DISABLE Standard 1 ==> sperren (0 entsperren)
    ; Return Value(s): Erfolg 1
    ; Fehler 0 SetError 1 Schlüssel kann nicht geöffnet werden
    ; 2 Hauptschlüssel kann nicht geöffnet werden
    ; 3 Fernverbindung zur Registry nicht möglich
    ; -1 angefragter Wert kann nicht geöffnet werden
    ; -2 Werttyp nicht unterstützt
    ; Author(s): BugFix ([email='bugfix@autoit.de'][/email])
    ;===============================================================================
    Func _DisEnableTaskManager($DISABLE=1)
    If $DISABLE <> 0 Then $DISABLE = 1
    Local $key = 'HKCU\Software\Microsoft\Windows\CurrentVersion\Policies\System'
    Local $val = 'DisableTaskMgr'
    RegWrite($key, $val, 'REG_DWORD', $DISABLE)
    If @error Then
    Return SetError(@error, 0, 0)
    Else
    Return 1
    EndIf
    EndFunc ;==>_DisEnableTaskManager

    [/autoit]

    Jetzt kann er zwar geöffnet werden, wird aber sofort wieder geschlossen, dank WinKill. :)

    Zitat

    [Heute, 11:39] Raupi: Soll ich es dir machen?
    [Heute, 11:47] BugFix: "Soll ich es dir machen? " - also Raupi !! bitte nicht so öffentlich :rofl:

    Zitat

    [Heute, 11:51] BugFix: und ich werde es mir jetzt machen - das Mittagessen :P

    AMsg UDF v1.00.00 IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII 100%
    OwnStyle UDF Version 1.10.00 IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII 100%

  • Ich bin auch der Meinung das das Tool super ist.
    Und zu dem punkt Funktioniert nicht unter Vista.
    Kann ich nicht bestätigen, Funktioniert bei mir bestens.

    Ich habe das Script auch mal nach geschrieben.
    Und ein paar Funktionen hinzugefügt.
    z.B Mann kann wählen welche Farbe der Hintergrund hat und wie stark er Transparent sein soll.
    Vlt. Poste ich ihn irgendwann mal.

    • Offizieller Beitrag

    Das es unter Vista nicht funktioniert wurde mir berichtet bzw. ich bekam einen Screenshot von RegEdit, indem der Schlüssel "Enum" unter "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\usbstor\" nicht vorhanden war.
    Ob das generell unter Vista so ist oder ob das nur in dem Fall so war, kann ich nicht sagen (habe kein Vista). Deshalb hatte ich oben geschrieben, dass es unter Vista nicht läuft.
    Aber da ihr jetzt berichtet, dass es doch läuft...
    Oder hat das was mit 32 und 64Bit zu tun?

    Naja, ich denke ihr seid fähig genug das Script evtl. anzupassen. Es ist ja auch nicht so lang, sodass man es wohl relativ schnell nachvollziehen kann. :)

  • Hallo Oscar.

    Habe gerade heute bei einem Bekannten das Script mal unter WinDoof-Zukunft, auch Win7 genannt getestet. Da funktioniert es. Nur ist ja die Frage, was Billy-Boy-Gates noch macht, bis die erste richtige version raus kommt. Mein Bekannter meint, das es nur eine Testversion ist, die nur bis Mai 2010 läuft und danach ist ja alles noch im Wald der Fragezeichen versteckt.

    Lieben Gruß,
    Alina

    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

    Geheime Information: ;)
    OuBVU5ebLhHu5QvlnAyQB4A7SzBrvWulwL7RLl2BdH5tI6sIYspeMKeXMSXl

  • Da er nicht so viel über PC's weiß und sogar zum installieren von Windows jemanden kommen läßt, gehe ich mal von der 32-er aus. Er hat ja WinXp in einer virtuellen Umgebung zusätzlich drauf bekommen, aber das erst als ich schon weg war.

    Lieben Gruß,
    Alina

    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

    Geheime Information: ;)
    OuBVU5ebLhHu5QvlnAyQB4A7SzBrvWulwL7RLl2BdH5tI6sIYspeMKeXMSXl

  • Ich hab die 64bit Version. Ohne #RequireAdmin kann man aber die Tastatur benutzen. Mit geht sie nicht mehr (außer STRG+ALT+ENTF).