必须将python脚本封装为windows服务才能在win11开机未登录时持续运行;需用pywin32安装服务、确保脚本独立可执行、设置自动启动,并通过services.msc和远程检测验证其系统级运行状态。

Win11系统开机后卡在登录界面或黑屏未进入桌面时,需让Python脚本在用户会话外、系统级上下文中持续运行——此时只有Windows服务模式能保证脚本随内核启动、不依赖图形界面、不因用户未登录而中断。
确认脚本必须以服务方式运行
若脚本需监听端口、处理系统事件、写入全局日志或响应硬件信号,且不能等用户点击登录后再启动,则必须封装为Windows服务;注册表Run项、启动文件夹、任务计划中的“登录时触发”全部失效,因为它们都依赖用户会话初始化完成。
这一步不可跳过:用CMD手动执行一次你的脚本全路径命令(例如C:\venv\Scripts\python.exe D:\svc\monitor.py),确认无ModuleNotFoundError、无权限拒绝、无路径报错——服务安装前必须100%可独立运行。
用pywin32将Python脚本封装为服务
方法一:标准服务类封装(推荐)
第一步:安装pywin32并完成系统级注册
在管理员权限的CMD中运行:
pip install pywin32 → 然后运行%PYTHONPATH%\Scripts\pywin32_postinstall.py -install(若提示找不到路径,请先用where python定位Python安装目录)。
第二步:编写服务骨架代码
新建myservice.py,内容必须包含_svc_name_、_svc_display_name_、SvcDoRun和SvcStop四个关键元素;【main()方法内必须用while self.is_alive:循环包裹业务逻辑,不能直接写死循环或time.sleep(1)】,否则服务无法响应停止指令。
第三步:添加工作目录与日志安全机制
在SvcDoRun开头插入os.chdir(os.path.dirname(__file__)),避免读取config.json失败;所有print()替换为win32event.LogMsg()或写入绝对路径文件,服务无控制台输出。
华为云 Python SDK 查询工具。自动发现已安装 SDK 的服务包、Client类、API 方法、入参详情、类信息(__init__ 参数、属性、类型、描述),支持关键字搜索,快速定位目标 API 使用方法。
安装并启动服务(管理员权限必需)
打开管理员CMD,cd到myservice.py所在目录,依次执行:
python myservice.py install
python myservice.py start
执行后立即检查服务状态:按Win+R→输入services.msc→找到你定义的_svc_display_name_名称的服务→确认状态为“正在运行”,启动类型为“自动”。【若服务启动失败,双击打开属性→“日志”选项卡查看错误详情,90%问题出在Python路径未用绝对路径或缺少pywin32_postinstall】
验证服务是否真正在无桌面状态下运行
方法一:强制注销当前用户
按Win+L锁屏 → 在登录界面不输入密码,直接按Ctrl+Shift+Esc调出任务管理器 → 切换到“服务”选项卡 → 查找你的服务名,状态应为“正在运行”。
方法二:重启后不登录,远程验证
从另一台设备用ping检测目标IP,再用telnet IP 端口测试脚本是否已监听(如HTTP服务绑定8080);或登录后立刻查看脚本生成的日志文件最后修改时间,应早于你登录时刻。
Python免费学习笔记(深入):立即使用
在学习笔记中,你将探索 Python 的核心概念和高级技巧!










