将Windows服务状态DWORD值转换为人类可读的格式

2024-06-01 09:36:36 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个函数,用于使用python3中PyWin32模块中的^{}函数枚举Windows系统上的所有服务。我能得到状态名称,服务描述和状态。问题是,对于状态,我得到了一个由7个元素组成的元组,而不是像“running”、“paused”、“stopping”、“restarting”等字符串。在

例如:

status_code = (32, 1, 0, 1077, 0, 0, 0)

^{}是这样的:

C++ +< ^{pr2}$

不管怎样,有很多可用的信息,我只对由元组的第二个元素表示的服务的当前状态感兴趣。在本例中,它的编号是“1”(0x00000001)。在

此表显示了每个值的含义

SERVICE_CONTINUE_PENDING 0x00000005 The service continue is pending.

SERVICE_PAUSE_PENDING 0x00000006 The service pause is pending.

SERVICE_PAUSED 0x00000007 The service is paused.

SERVICE_RUNNING 0x00000004 The service is running.

SERVICE_START_PENDING 0x00000002 The service is starting.

SERVICE_STOP_PENDING 0x00000003 The service is stopping.

SERVICE_STOPPED 0x00000001 The service is not running.

如何将字符串映射到每个值并显示显示当前状态的字符串?在

我想我可以创建一个这样的字典,然后提取对应于该值的字符串:

status = {"1": "not running", "2": "starting", "3": "stopping", "4": "running", "5": "continue pending", "6": "pause pending", "7": "paused"}

然后提取元组的第二个值:status_code[1],我需要将它与字典status中的值进行比较。 为了打印服务状态的字符串,我可以执行以下操作:

print(status[str(status_code[1])])

我做得对吗?有更好的方法吗?在


Tags: the函数字符串is状态statusservicecode