You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python系统自动化遇pywintypes.error: (5, 'OpenSCManager', 'Access is denied.')错误求助

问题解答:解决Windows服务操作的权限拒绝错误

没错,你碰到的pywintypes.error: (5, 'OpenSCManager', 'Access is denied.')确实是权限不足导致的——修改Windows系统级服务(比如Windows Update)必须要有管理员级别的提升权限(Elevated access),普通用户权限根本碰不了这类核心服务。

下面给你几种具体的操作方案,还有代码里的关键细节提醒:

一、手动提升权限运行代码

方法1:通过IDE/终端以管理员身份启动

  • 如果你用PyCharm、VS Code这类IDE:右键点击IDE图标,选择以管理员身份运行,再在里面执行你的代码就行。
  • 如果用命令提示符(CMD)或PowerShell:同样右键点终端图标选以管理员身份运行,切换到代码所在目录后,执行python 你的脚本文件名.py。

方法2:直接右键脚本提权运行

找到你的Python脚本文件,右键选择以管理员身份运行,如果系统弹出打开方式选择框,直接选你的Python解释器即可。

二、让脚本自动请求提升权限

要是不想每次手动右键提权,可以给脚本加一段代码,让它运行时自动检查权限,没权限就弹窗请求管理员权限:

import ctypes
import sys
import win32serviceutil

def is_admin():
    try:
        return ctypes.windll.shell32.IsUserAnAdmin()
    except:
        return False

if not is_admin():
    # 以管理员身份重新启动当前脚本
    ctypes.windll.shell32.ShellExecuteW(
        None, "runas", sys.executable, " ".join(sys.argv), None, 1
    )
    sys.exit()

# 注意:Windows Update的实际服务名是`wuauserv`,不是显示名称"Windows Update"
service = "wuauserv"
try:
    win32serviceutil.StopService(service)
    print(f"服务 {service} 已成功停止")
except Exception as e:
    print(f"操作失败:{e}")

额外重要提醒

很多Windows服务的显示名称和实际服务名不一样,比如你写的"Windows Update",它的真实服务名是wuauserv。想查真实服务名可以这么做:

  1. 按下Win+R,输入services.msc打开服务管理器
  2. 找到对应服务,右键选「属性」,「常规」标签页里的「服务名称」就是代码里需要用的名称

内容的提问来源于stack exchange,提问作者joy

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.08 12:07:34