Как намеренно заблокировать пользовательский ввод удаленно? - PullRequest
0 голосов
/ 21 марта 2019

У меня есть требование от школьного учителя, где я работаю.Он хотел бы иметь программу или скрипт, который позволил бы ему блокировать и разблокировать клавиатуру и мышь ученика.Я сделал сценарий powershell, и он работал локально.Вот код:

function Block-UserInput($status) {
   $code = @"
     [DllImport("user32.dll")]
     public static extern bool BlockInput(bool fBlockIt);
  "@
   $userInput = Add-Type -MemberDefinition $code -Name Win32BlockInput -Namespace Win32Functions -PassThru
   $userInput::BlockInput($status)
}

Block-UserInput($true)
Start-Sleep 4
Block-UserInput($false)

Однако удаленно скрипт не работает, потому что команда выполняется в отдельном сеансе пользователя.Это имеет смысл с точки зрения безопасности.Ниже приведен удаленный вызов:

$password = "xxxxxxx" | ConvertTo-SecureString -asPlainText -Force
$username = "yyyyyyy" 
$cred = New-Object System.Management.Automation.PSCredential($username,$password)
$session = New-PSSession -ComputerName 127.0.0.1 -Credential $cred

Invoke-Command -Session $session -ScriptBlock ${function:Block-UserInput} -ArgumentList $true

Invoke-Command -Session $session -ScriptBlock ${function:Block-UserInput} -ArgumentList $false

Remove-pssession -session $session

Мой вопрос: есть ли способ заблокировать ввод пользователя удаленно?Это может быть решение любого типа, включая другие языки программирования или программное обеспечение для автоматизации, например, ansible.Я показал свое решение (которое не сработало: D), чтобы обсудить некоторые идеи о том, как решить эту проблему.Спасибо.

...