Windows如何通过编程方式解锁屏幕?

如题,.net萌新。我正在尝试如何远程解锁屏幕。win32中好像没有专用的方法,但目前发现“网易UU远程”和一个名叫“远程解锁”的app都实现了安卓端控制win端解锁,可以肯定是有办法实现的。

二者的相关信息

  • 都注册了系统服务用于监听请求和运行在锁屏界面,且未开启“允许与桌面交互”
  • 似乎没有实现自定义的凭据提供程序,因为注册表中没发现对应的值
  • 都没有用到系统的UDP(也就是系统属性里的“远程桌面”),关闭了相关系统功能二者仍都能正常工作
  • “远程解锁”会在锁屏界面左下角用户信息下方又添加一项,头像是其app图标,点击后会在屏幕中央显示app图标,下方是一个自定义的按钮
  • “网易UU远程”在锁屏界面电源菜单打开的情况下可以看到关闭以及输入密码的过程,确定是通过模拟输入实现的
  • “远程解锁”即使在锁屏界面打开电源菜单的情况下仍然能正常解锁,应该不是通过模拟输入实现的

已经尝试过的方法

环境:均在管理员权限的windows服务中执行,有UI访问和交互权限,锁屏界面,.NET 9.0

  • 调用win32 LogonUser:各种登录类型均无效
  • 模拟输入:无效,被UIPI拦截
  • LogonUser + ImpersonateLoggedOnUser + 模拟输入,无效,同样被UIPI拦截
  • 使用WTSConnectSession当前会话连接0会话,或0会话连接当前会话:无效,拒绝访问
  • 命令行执行tscon <sessionId> /dest:console:0到9均无效

其他相关疑问

  • 被控端能否在系统远程桌面功能关闭的情况下,运行一个自定义的UDP服务或一个从零实现的远程桌面,在控制端使用专用的客户端连接,并控制锁屏或未登录状态的被控端?
  • 自定义的凭据提供程序能否在无用户交互的情况下进行登录?
阅读 469
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
logo
Microsoft
子站问答
访问
宣传栏