Security 如何启动非活动工作站锁?

Security 如何启动非活动工作站锁?,security,winapi,interactive,Security,Winapi,Interactive,如果调用API,它会立即锁定工作站 但当使用类似于集团政策的内容时,您有一个宽限期,其中: 屏幕空白 和() 在工作站真正锁定之前 (即使禁用了屏幕保护程序,也会出现这种空白) 据我所知,这个宽限期的存在是一个内部实现细节,即使它的值存在于注册表中: HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon\ScreenSaverGracePeriod 它的使用,或者与非活动锁相关的任何其他行为,我假设都是内部实现细节 作为一个应

如果调用API,它会立即锁定工作站

但当使用类似于集团政策的内容时,您有一个宽限期,其中:

  • 屏幕空白
  • 和()
  • 在工作站真正锁定之前
(即使禁用了屏幕保护程序,也会出现这种空白)

据我所知,这个宽限期的存在是一个内部实现细节,即使它的值存在于注册表中:

HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon\ScreenSaverGracePeriod
它的使用,或者与非活动锁相关的任何其他行为,我假设都是内部实现细节

作为一个应用程序,我如何触发与非活动锁触发的相同的操作(以便发生的事情就是应该发生的事情)

因此,我想调用Windows调用的任何东西,而不是调用,以便:

  • 空白屏幕
  • 给予宽限期
  • 锁定工作站
更新日期:2019年11月10日 微软知识库文章现在完全从互联网上消失了。现复制如下:

屏幕保护程序宽限期绕过密码保护 症状 将计算机配置为使用带有密码的屏幕保护程序后,以及屏幕保护程序启动后,您可以通过按键或移动鼠标绕过密码安全设置并解锁计算机

原因 屏幕保护程序锁定计算机的时间与建立密码保护的时间之间存在延迟。在此期间,您可以使用按键或鼠标移动来解锁计算机,而无需键入密码

决议 Windows NT 4.0和Windows 2000

要在Microsoft Windows NT 4.0和Microsoft Windows 2000中解决此问题,请缩短注册表中的屏幕保护程序密码注册间隔。为此:

  • 单击开始,单击运行,键入regedt32,然后单击确定
  • Windows菜单上,单击本地机器上的HKEY_LOCAL_机器
  • 双击\Software\Microsoft\windowsnt\CurrentVersion\Winlogon文件夹
  • 编辑菜单上,单击添加值,键入屏幕保护色周期,在数据类型框中单击注册表,然后单击确定
  • 数据框中键入表示密码激活延迟的数字(以秒为单位),然后单击确定。您可以输入介于0和2147483之间的任意整数。默认条目为5。如果使用的条目为零,则没有密码保护延迟
  • 退出注册表编辑器,然后重新启动计算机
  • Windows XP和Windows Server 2003

    要在Microsoft Windows XP和Microsoft Windows Server 2003中解决此问题,请缩短注册表中的屏幕保护程序密码注册间隔。为此:

  • 单击开始,单击运行,键入regedt32,然后单击确定
  • 找到并单击以下注册表子项:

    HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon
    
  • 编辑菜单上,指向新建,然后单击字符串值

  • 键入ScreenSaverGracePeriod,然后按ENTER键
  • 双击ScreenSaverGracePeriod
  • 单击基本标题下的十进制,然后在值数据框中输入一个数字,表示密码激活延迟(秒)

    您可以输入0到2147483之间的任意整数(大约24天)。值为零表示没有密码保护延迟。没有默认条目

  • 单击确定,然后退出注册表编辑器

  • 最后更新日期:2018年4月19日


    windowsAPI wi帮助在此

    GetLastInputInfo检索上次输入事件的时间(以毫秒为单位)

    要清空屏幕,请执行以下操作:

    HWND_BROADCAST = 0xFFFF
    WM_SYSCOMMAND = 0x0112
    SC_MONITORPOWER = 0xF170
    
    SendMessage(HWND_BROADCAST, WM_SYSCOMMAND, SC_MONITORPOWER, 2)
    
    2=显示关闭

    最后,要锁定工作站,请执行以下操作:

    锁定工作站api函数


    LockWorkStation函数只能由在交互式桌面上运行的进程调用。此外,用户必须登录,并且工作站不能被锁定。

    这不是OP想要的。OP希望为策略触发操作系统的本机功能,而不是手动实现每个步骤。好吧,这是触发此功能的唯一方法,当然我很乐意看到其他解决方案。我使用GetLastInputInfo;这样我才知道什么时候该打电话给LockWorkStation。我想避免的是货物崇拜的模仿。例如,Windows不保证ScreenSaverGracePeriod是一件事;它是WinLogon的内部。我正在寻找面向公众的API。与上述API最接近的不是您提供的链接背后的注册表项吗?这都是winlogon.exe内部的,没有面向公众的API。