Python win32serviceutil QueryServiceStatus: 返回值是什么意思?

2 投票
2 回答
6848 浏览
提问于 2025-05-18 21:16

我正在学习使用pywin32,并尝试在64位的Python 3.6.4上使用win32serviceutil模块。

以下代码:

import win32serviceutil as service
serviceStatus = service.QueryServiceStatus("WinDefend")
print(serviceStatus)

返回了以下这个元组:

(16, 4, 197, 0, 0, 0, 0)

我对Windows的API和pywin32完全是新手,这6个值是什么意思呢?关于pywin32和win32的文档没有提供任何有用的信息。

补充 - 我是在Windows 10上运行的。

相关问题:

  • 暂无相关问题
暂无标签

2 个回答

0

win32serviceutil[GitHub]: mhammond/pywin32 - Python for Windows (pywin32) Extensions 这个项目的一部分,它是一个用于 Windows 的 Python 封装,简单来说就是让 Python 可以更方便地使用 Windows 的一些功能。

  • [ActiveState.Docs]: win32service.QueryServiceStatus(这是我找到的最接近官方的 PyWin32 文档)是对 [MS.Docs]: QueryServiceStatus function 的封装,它会返回一个 [ActiveState.Docs]: SERVICE_STATUS Object(元组)

    Items:
    [0] int : serviceType
            The type of service.
    [1] int : serviceState
            The current state of the service.
    [2] int : controlsAccepted
            The controls the service accepts.
    [3] int : win32ExitCode
            The win32 error code for the service.
    [4] int : serviceSpecificErrorCode
            The service specific error code.
    [5] int : checkPoint
            The checkpoint reported by the service.
    [6] int : waitHint
            The wait hint reported by the service.
    
  • win32serviceutil.QueryServiceStatus 是对前面提到的功能的简化,它把所有相关的调用(比如 win32service.OpenSCManagerwin32service.OpenServicewin32service.CloseServiceHandle)都封装在一起,返回的结果和之前的是一样的。

3

你得到了一个叫做 SERVICE_STATUS 的结构体。

里面的具体数值代表了以下意思:

dwServiceType=SERVICE_WIN32_OWN_PROCESS(16)
dwCurrentState=SERVICE_RUNNING(4)
dwControlsAccepted=SERVICE_ACCEPT_SESSIONCHANGE|SERVICE_ACCEPT_POWEREVENT|SERVICE_ACCEPT_SHUTDOWN|SERVICE_ACCEPT_STOP (0xc5==197)
dwWin32ExitCode=NO_ERROR (0)
dwServiceSpecificExitCode=0 // This value is ignored because dwWin32ExitCode != ERROR_SERVICE_SPECIFIC_ERROR.
dwCheckPoint=0
dwWaitHint=0

撰写回答