Benutzer Eingabe blockieren mit PowerShell

Unter gewissen Umständen ist es notwendig die Eingabemöglichkeit von Benutzern zu unterbinden. Wird ein PowerShell Script im User-Kontext ausgeführt, welches eine sensible Operation durchführt, kann es sinnvoll sein die Benutzer Eingabe blockieren zu lassen. In PowerShell wird hier auf die user32.dll zurückgegriffen.

Eingabe blockieren mit PowerShell

Eingabe blockieren im PowerShell Script

Wie oben erwähnt, wird für das Blockieren der Eingabe durch den User auf die user32.dll zugegriffen. Anbei der benötigte PowerShell Code:

# Benoetigt Administrator-Rechte
# Ohne Administrator-Rechte wird die Tastatur nicht blockiert

# import user32.dll
$code = @'
    [DllImport("user32.dll")]
    public static extern bool BlockInput(bool fBlockIt);
'@

#Typ definieren
$userInput = Add-Type -MemberDefinition $code -Name Blocker -Namespace UserInput -PassThru

# Benutzer-Eingabe blockieren
$null = $userInput::BlockInput($true)

Write-Warning "Die Eingabe wurde fuer 10 Sekunden deaktiviert..."
Start-Sleep -Seconds 10

# Benutzer-Eingabe erlauben
$null = $userInput::BlockInput($false)

Wird das PowerShell Script im Benutzer-Kontext ohne Administrator-Rechte ausgeführt, so kann die Tastatur-Eingabe nicht deaktiviert werden. Das bedeutet also, dass man ein volles Deaktivieren aller Eingabemöglichkeiten nur mit Administrator-Berechtigungen erreichen kann.

In Zeile 14 wird die Benutzer-Eingabe mit dem Befehl $null = $userInput::BlockInput($true) blockiert. Somit kann die Maus und Tastatur nicht mehr verwendet werden.

Möchte man die Eingabe durch den Benutzer wiederum zulassen, so verwendet man (wie in Zeile 20) den Boolean-Wert $false. $null = $userInput::BlockInput($false)

Eingabe (automatisiert) wieder erlauben

Hat man die Eingabemöglichkeiten mit $userInput::BlockInput($true) deaktiviert, so kann man natürlich nichts mehr eingeben, und somit die Deaktivierte Maus und Tastatur nicht mehr aktivieren. Somit darf man nicht vergessen, dass im PowerShell Script die Eingabe automatisch wieder erlaubt werden muss.

Wie dies angestoßen wird ist jedem selbst überlassen. Beispielsweise nach Ablauf einer Zeit, oder nach einem anderen Event. Im Beispiel Script (oben) wird der Input nach Ablauf von 4 Sekunden aktiviert.

Johannes
 

Click Here to Leave a Comment Below 0 comments