@
XiaoBaiYa #7 #10 听起来你忽略了一楼的建议。
用 Windows 搜索“屏幕保护程序”可以看到传统的屏幕保护程序设置界面,可以要求自动启动的屏幕保护程序关闭后锁定电脑。
如果手工打开屏幕保护程序,那么它结束后不会自动锁定电脑,解决方法是写代码:
Add-Type -TypeDefinition 'namespace ns477d7e74845b4ad2a3f26d341153404c
{
public static class cls477d7e74845b4ad2a3f26d341153404c
{
[System.Runtime.InteropServices.DllImport("user32.dll", SetLastError = true)]
public static extern bool LockWorkStation();
}
}';
[System.Diagnostics.Process]::Start([System.IO.Path]::Combine([System.Environment]::GetFolderPath([System.Environment+SpecialFolder]::System), 'scrnsave.scr')).WaitForExit();
[ns477d7e74845b4ad2a3f26d341153404c.cls477d7e74845b4ad2a3f26d341153404c]::LockWorkStation();
很可惜这个代码有竞态条件,即屏保退出之后、锁定电脑之前有一段时间,用户可能可以操作电脑。(自动启动的屏幕保护程序无此问题,因为 Windows 会在单独的桌面上启动屏保,结束后锁定并切换到安全桌面。)