小编Phi*_*Phi的帖子

检查 Windows 当前是否被锁定

我在 Windows 10 Pro x64 ver 1703 build 15063.726 上,尝试编写程序重启服务。它以管理员权限在我的用户下运行,通过计划任务每​​ 10 分钟运行一次。

如果服务器不可用或中断:

  • 如果我的计算机被锁定,重启程序会终止并重新启动服务器程序。
  • 如果我的电脑没有被锁定,重启程序会显示一个对话框来确认重启。我可能正在处理服务器程序并且不希望重新启动破坏任何调试。

唯一的复杂问题是检测计算机是否被锁定。我尝试了几种方法:

  1. 打开输入桌面()

仅当用户在计算机被锁定后开始输入密码时才返回 NULL。除此之外,返回一个有效的句柄。据推测,在用户尝试登录并切换输入之前,不会取消选择输入桌面。

  1. OpenInputDesktop() 与 GetThreadDesktop()

(当然传入 GetCurrentThreadID() )

句柄仍然匹配,可能是由于相同的原因 1 失败。

  1. LockApp.exe/LockAppHost.exe 的进程检查

似乎也与用户输入密码有关……或者因为我的服务器重启应用程序是 32 位的,在读取 64 位进程 LockApp.exe 时遇到问题。

  1. GetForegroundWindow() 锁定时返回 null

虽然提到可疑,但我也试过这个。假阴性,说它没有被锁定

  1. 手动切换桌面并查看它是否有效

这里的代码示例描述,这个也是半身像并给出了错误的否定。

有没有剩下的办法?我真的宁愿没有仅用于注册锁定/解锁不断运行的服务。

或者这些方法中的一种应该已经起作用了,而我的 Windows 被窃听了?

干杯

c# windows process

6
推荐指数
2
解决办法
3884
查看次数

标签 统计

c# ×1

process ×1

windows ×1