python win32service-获取服务的触发启动信息
win32 API函数支持服务配置触发信息结构,以获取触发服务启动的事件。但是,python并没有将此类值列为参数选项。win32service模块是否有可能获取这些信息?不幸的是,没有。这里有一个在Python 3.5和PyWin32 v221下运行的简单代码片段:python win32service-获取服务的触发启动信息,python,winapi,triggers,startup,pywin32,Python,Winapi,Triggers,Startup,Pywin32,win32 API函数支持服务配置触发信息结构,以获取触发服务启动的事件。但是,python并没有将此类值列为参数选项。win32service模块是否有可能获取这些信息?不幸的是,没有。这里有一个在Python 3.5和PyWin32 v221下运行的简单代码片段: #/usr/bin/env蟒蛇3 导入win32service 如果名称=“\uuuuu main\uuuuuuuu”: 对于目录中的名称(win32service): 如果name.startswith(“服务配置”): 打印(
#/usr/bin/env蟒蛇3
导入win32service
如果名称=“\uuuuu main\uuuuuuuu”:
对于目录中的名称(win32service):
如果name.startswith(“服务配置”):
打印(名称,getattr(win32service,名称))
输出:
(py35x64_测试)e:\Work\Dev\StackOverflow\q046916726>“c:\Work\Dev\VEnvs\py35x64_测试\Scripts\python.exe”a.py
服务配置延迟自动启动信息3
服务配置描述1
服务配置故障操作2
服务配置失败动作标志4
服务配置预关机信息7
服务配置所需权限信息6
服务配置服务SID信息5
我还检查了win32con(这是另一个PyWin32模块,只包含常量定义),但也没有运气
然后,我查看了${PYWIN32_SRC_DIR}/PYWIN32-221/win32/SRC/win32service.I,并注意到对于ChangeServiceConfig2(以及QueryServiceConfig2),InfoLevel参数是针对上述常量进行专门检查的,因此直接传递其值(8),将引发异常(NotImplementedError)
在进一步讨论之前,让我们花一点时间了解调用这样的Python包装器(如win32service.QueryServiceConfig2
)时会发生什么:
- 让我们看一看支持的值:例如服务配置预关机信息:
- lpInfo是指向仅具有dwPreshutdownTimeout成员(简单DWORD)的
- 另一方面,服务配置触发信息:
- lpInfo是指向
- pTriggers成员是指向
- pDataItems成员是指向
- pTriggers成员是指向
- lpInfo是指向
ctypes.Structure
)
- 顺便说一句,我曾经遇到过这样的情况:我不得不打电话(!!!14个奇怪的论点!!!)。显然,它不是由PyWin32导出的,所以我通过ctypes调用它,但我必须编写:
- ~170用于定义结构的代码行(仅限于我的场景所需的代码行)
- ~50行来填充它们并调用函数
- 不幸的是,没有。下面是一个在Python 3.5和PyWin32 v221下运行的简单代码片段:
#/usr/bin/env蟒蛇3
导入win32service
如果名称=“\uuuuu main\uuuuuuuu”:
对于目录中的名称(win32service):
如果name.startswith(“服务配置”):
打印(名称,getattr(win32service,名称))
输出:
(py35x64_测试)e:\Work\Dev\StackOverflow\q046916726>“c:\Work\Dev\VEnvs\py35x64_测试\Scripts\python.exe”a.py
服务配置延迟自动启动信息3
服务配置描述1
服务配置故障操作2
服务配置失败动作标志4
服务配置预关机信息7
服务配置所需权限信息6
服务配置服务SID信息5
我还检查了win32con(这是另一个PyWin32模块,只包含常量定义),但也没有运气
然后,我查看了${PYWIN32_SRC_DIR}/PYWIN32-221/win32/SRC/win32service.I,并注意到对于ChangeServiceConfig2(以及QueryServiceConfig2),InfoLevel参数是针对上述常量进行专门检查的,因此直接传递其值(8),将引发异常(NotImplementedError)
在进一步讨论之前,让我们花一点时间了解调用这样的Python包装器(如win32service.QueryServiceConfig2
)时会发生什么:
- 让我们看一看支持的值:例如服务配置预关机信息:
- lpInfo是指向仅具有dwPreshutdownTimeout成员(简单DWORD)的
- 另一方面,服务配置触发信息:
- lpInfo是指向
- pTriggers成员是指向
- pDataItems成员是指向
- pTriggers成员是指向
- lpInfo是指向