我正在测试一个监听远程计算机上按键的程序,因此我需要以某种方式生成它们,并且最好仅使用 powershell 核心。
当我尝试通过调用命令在远程计算机上使用 SendKeys 时,我遇到了访问被拒绝(win32 异常或 dotnetmethod 异常)的问题,即使向具有管理员权限的脚本提供了凭据并且它在本地运行良好。
我以这种方式运行许多脚本,而这个脚本是唯一失败的脚本(并且在所有操作系统上都以相同的方式失败)
例如
$script =
{
Add-Type -AssemblyName System.Windows.Forms
[System.Windows.Forms.SendKeys]::SendWait($item);
}
invoke-command -computername $machine -scriptblock $script -credential $cred
SendInput 看起来可能是一个有前途的替代品,但我还没有找到适合我的示例。
最佳答案
事实证明,问题是由于无法访问 Windows 用户 session 造成的。
我通过在远程计算机上创建计划任务并调用 powershell 脚本来解决这个问题。这样脚本就可以在用户 session 中运行。
否则,它似乎在无 GUI 的 session 中运行,无法调用键盘和鼠标 API。
关于c# - 远程调用时 Powershell SendKeys 访问被拒绝,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43307722/