我正在学习使用 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
是对的,
win32serviceutil
的文档相当缺乏这方面的解释。好消息是这些值直接映射到 Windows API 函数
QueryServiceStatus
返回的
SERVICE_STATUS
结构。
以下是收到的元组中每个值的细分:
-
索引 0(值:16): 这表示服务的 ServiceType 。值 16(0x10 十六进制)对应于
SERVICE_WIN32_SHARE_PROCESS
,这意味着该服务与系统上的其他服务共享一个进程。 -
索引 1(值:4): 这表示服务的当前 CurrentState 。值 4 对应于
SERVICE_RUNNING
,这意味着该服务当前正在运行。 -
索引 2(值:197): 这表示服务的 ControlsAccepted 。该值是一个位掩码,指示服务接受哪些控制代码。值 197(0xC5 十六进制)表示服务接受以下控制代码:
-
SERVICE_CONTROL_INTERROGATE
(1) -
SERVICE_CONTROL_STOP
(2) -
SERVICE_CONTROL_NETBINDADD
(64) -
SERVICE_CONTROL_NETBINDREMOVE
(128) - 可以在此处找到可能的控制代码列表: https://learn.microsoft.com/en-us/windows/win32/api/winsvc/ns-winsvc-service_status
-
-
索引 3、4 和 5(值:0): 这些值分别表示 Win32ExitCode 、 ServiceSpecificExitCode 和 CheckPoint 。由于服务正在运行且没有错误,因此这些值均为 0。
-
索引 6(值:0): 这表示 WaitHint 。当服务正在启动或停止时,这表示操作完成所需的大致毫秒数。由于服务正在运行,因此该值为 0。
总而言之,的代码输出表明“WinDefend”服务当前正在运行并与其进程中的其他服务共享,并接受查询的特定控制代码。
标签:python,winapi,pywin32 From: 48851473