如何防止 Windows 中策略强制屏幕锁定?

如何防止 Windows 中策略强制屏幕锁定?

我们公司的 BOFH 强制屏幕锁定设置延迟时间短得可笑。这让人很沮丧,而且适得其反。

有没有办法阻止自动屏幕锁定?我认为没有办法覆盖策略强制设置,但也许有一种模仿用户活动的软件。

在我设置永久鼠标滚轮之前只是想问一下。(明白了吗?)

答案1

另一个选择是免费软件咖啡因程序。它也可以免费用于商业用途。摘自该程序的主页:

如果您的 PC 无法锁定或进入睡眠状态,Caffeine 可让其保持唤醒状态。它的工作原理是每 59 秒模拟一次按键,这样您的机器就会认为您仍在键盘上工作,因此不会锁定屏幕或激活屏幕保护程序。

Caffeine 的工作原理是每 59 秒模拟一次 F15 键按下事件。在所有可用的按键中,F15 可能是干扰最小的(我从未见过有该键的 PC 键盘!),并且最不可能干扰您的工作。

这种现成的解决方案还允许您控制何时启用和禁用它:

双击程序图标会清空咖啡壶(图标代表咖啡壶的意思),并暂时禁用程序。再次双击咖啡壶会重新装满咖啡,并使机器保持唤醒状态。

答案2

如果仍安装有 Windows Media Player,您可以循环播放视频并将其最小化(示例“野生动物”视频就很好用)。默认情况下,只要视频正在播放,屏幕就不会锁定。

答案3

我使用一个名为idle.vbs的脚本:

Dim objResult

Set objShell = WScript.CreateObject("WScript.Shell")    

Do While True
  objResult = objShell.sendkeys("{NUMLOCK}{NUMLOCK}")
  Wscript.Sleep (6000)
Loop

每六秒钟,此命令会快速切换键盘上的数字锁定,使 Windows 认为有人正在与键盘交互,从而阻止屏幕锁定。此命令在原始 Windows 上运行,您不需要开发或脚本工具即可使用它,只需创建一个以 .vbs 为扩展名的文本文件并双击它(或将其放在启动项中)。

编辑:你可以把这个脚本放在你的启动项中

 choco install IdleVbs -source https://www.myget.org/F/joshrivers-utility/

有关 Choclatey ( choco) CLI 安装程序的更多信息,请参阅:

https://chocolatey.org/

答案4

延伸切罗纳回答,这里是PowerShell中的一个实现,使用SetThreadExecutionState()。

只要脚本正在运行,屏幕保护程序和屏幕锁就不会启动。

Set-StrictMode -version 3.0

# Definition of SetThreadExecutionState from -
#   http://www.pinvoke.net/default.aspx/kernel32/SetThreadExecutionState.html
#   https://docs.microsoft.com/en-us/windows/win32/api/winbase/nf-winbase-setthreadexecutionstate
# "EXECUTION_STATE" changed to "uint", added "public" modifier.
$Signature = @'
[DllImport("kernel32.dll", CharSet = CharSet.Auto, SetLastError = true)]
public static extern uint SetThreadExecutionState(uint esFlags);
'@

$ES_AWAYMODE_REQUIRED = 0x00000040L
$ES_CONTINUOUS        = 0x80000000L
$ES_DISPLAY_REQUIRED  = 0x00000002L
$ES_SYSTEM_REQUIRED   = 0x00000001L

# Details on Add-Type in https://docs.microsoft.com/en-us/powershell/module/microsoft.powershell.utility/add-type?view=powershell-7.
$Kernel32 = Add-Type -MemberDefinition $Signature -Name 'Kernel32' -Namespace 'Kernel32' -PassThru

echo "Forcing system to not go to sleep (disable screen saver)."
echo "Close the window to allow sleep again."
$result = $Kernel32::SetThreadExecutionState($ES_CONTINUOUS -bor $ES_DISPLAY_REQUIRED -bor $ES_SYSTEM_REQUIRED)

# Loop until script is forcibly stopped.
While ($true) {
  Start-Sleep (60 * 60 * 24)  # 24 hours.
}

相关内容