本文目录导读:

- 1. Windows(批处理 / PowerShell / VBScript)
- 2. macOS(AppleScript / Bash)
- 3. Linux(X11 / Wayland)
- 4. 跨平台脚本(Python)
- 5. 定时锁屏(结合计划任务)
- 注意事项
Windows(批处理 / PowerShell / VBScript)
方法 A:使用 rundll32.exe(最经典)
@echo off rundll32.exe user32.dll,LockWorkStation
保存为 lock.bat,双击运行即可。
方法 B:使用 PowerShell
Add-Type -TypeDefinition 'using System; using System.Runtime.InteropServices; public class Lock { [DllImport("user32.dll")] public static extern bool LockWorkStation(); }'
[Lock]::LockWorkStation()
或更简洁:
(New-Object -ComObject Shell.Application).Windows() | Out-Null; rundll32.exe user32.dll,LockWorkStation
方法 C:使用 VBScript
CreateObject("WScript.Shell").Run "rundll32.exe user32.dll,LockWorkStation", 0
保存为 lock.vbs(可静默运行,无窗口闪烁)。
macOS(AppleScript / Bash)
方法 A:使用 AppleScript(推荐)
tell application "System Events" to keystroke "q" using {command down, control down}
保存为 .scpt 文件,或通过 osascript 运行:
osascript -e 'tell application "System Events" to keystroke "q" using {command down, control down}'
方法 B:直接调用 pmset 或 loginctl
# 需要屏幕睡眠(锁屏) pmset displaysleepnow
Linux(X11 / Wayland)
方法 A:使用 xdg-screensaver(X11)
xdg-screensaver lock
方法 B:使用 loginctl(systemd 环境)
loginctl lock-session
注意:部分桌面环境可能需要指定会话,
loginctl lock-session $(loginctl | grep $(whoami) | awk '{print $1}')
方法 C:使用 dm-tool(LightDM)
dm-tool lock
方法 D:使用 gnome-screensaver-command(GNOME)
gnome-screensaver-command -l
跨平台脚本(Python)
使用 Python 的 os 模块,根据操作系统调用对应命令:
import os
import platform
system = platform.system()
if system == "Windows":
os.system("rundll32.exe user32.dll,LockWorkStation")
elif system == "Darwin": # macOS
os.system("pmset displaysleepnow")
elif system == "Linux":
os.system("xdg-screensaver lock") # 或 loginctl lock-session
else:
print("Unsupported OS")
定时锁屏(结合计划任务)
- Windows:用“任务计划程序”运行
lock.bat。 - Linux:用
cron或systemd timer定时执行脚本。 - macOS:用
launchd定时执行。
注意事项
- 权限:某些脚本(如
loginctl lock-session)可能需要用户权限,而非root。 - 桌面环境差异:Linux 锁屏命令因桌面环境(GNOME、KDE、XFCE)而异,可测试上述命令是否有效。
- 静默执行:VBScript 可隐藏窗口,适合无人值守场景。
根据你的系统选择相应脚本即可,如果需要更复杂的逻辑(如定时锁屏、远程触发),可以在此基础上扩展。