win32 API QueryServiceConfig2機能は、サービスの起動をトリガするイベントを取得するためにSERVICE_CONFIG_TRIGGER_INFO構造体をサポートします。しかし、pythonのwin32service.QueryServiceConfig2()は、そのような値をパラメータオプションとしてリストしていません。 win32serviceモジュールでその情報を取得することは可能ですか?python win32service - サービス起動時の起動情報の取得
答えて
残念ながら、ここでは、単純なコードスニペットはPython35の下で走っだとpywin32-221:
import win32service
if __name__ == "__main__":
for name in dir(win32service):
if name.startswith("SERVICE_CONFIG_"):
print(name, getattr(win32service, name))
出力:
(py35x64_test) c:\Work\Dev\StackOverflow\q46916726>"c:\Work\Dev\VEnvs\py35x64_test\Scripts\python.exe" a.py SERVICE_CONFIG_DELAYED_AUTO_START_INFO 3 SERVICE_CONFIG_DESCRIPTION 1 SERVICE_CONFIG_FAILURE_ACTIONS 2 SERVICE_CONFIG_FAILURE_ACTIONS_FLAG 4 SERVICE_CONFIG_PRESHUTDOWN_INFO 7 SERVICE_CONFIG_REQUIRED_PRIVILEGES_INFO 6 SERVICE_CONFIG_SERVICE_SID_INFO 5
私はまた別である(win32con
をチェックしましたpywin32モジュール、それは定数定義のみを含む)が、luc kのいずれかである。
はその後、私は "$ {} PYWIN32_SRC_DIR /pywin32-221/win32/src/win32service.i" で見ていた、とChangeServiceConfig2
(ともQueryServiceConfig2
)のために、InfoLevel
引数は、具体的に照らしてチェックされていることに気づきました上記の定数を使用して、その値()を直接渡すと、例外(NotImplementedError
)が発生します。 ( - もしあればPythonのスタイル)Cに変換され
- 引数:
先に進む前に、このようなPythonのラッパーを(のような
win32service.QueryServiceConfig2
)を呼び出すときに何が起こるかを理解する少しを費やしてみましょうスタイル - C関数は、引数
- 関数の結果(又はOUTPは、上記で変換と呼ばれていますもしあれば - が - UT引数)パイソンバックから[MSDN]: ChangeServiceConfig2 functionについて
に変換され、データは(dwInfoLevel
値に応じて、lpInfo
は、様々な意味を有することができる)引数を介して前後に転送されます。
- サポートされている値を見てみましょう。
SERVICE_CONFIG_PRESHUTDOWN_INFO
:- である:
- のみ一方
lpInfo
(単純
DWORD
である)dwPreshutdownTimeout
部材、SERVICE_CONFIG_TRIGGER_INFO
を有する[MSDN]: SERVICE_PRESHUTDOWN_INFO structureへのポインタであります[MSDN]: SERVICE_TRIGGER_INFO structure-
へのポインタ210
pTriggers
部材はwaaayより複雑である[MSDN]: SERVICE_TRIGGER_SPECIFIC_DATA_ITEM structure
lpInfo
- である:
へのポインタ[MSDN]: SERVICE_TRIGGER structure
pDataItems
体へのポインタである(と関連するすべての構造が他のメンバーを持っていることに注意してください私は入れ子のレベルを上げるものだけを挙げました)。すべてのこれらの引数のサポートを追加する
は正確に簡単な作業ではありませんので、彼らは(少なくとも現時点では)未処理です。
と組み合わせて、多くの人が機能を要求していないので、このような例がもっとあります。MS(そのような複雑な動作を持つ機能を持つ意思決定)代替(かなり複雑なもの)、あなたは[Python]: ctypes — A foreign function library for Pythonを使用することができますが、あなたは、私はPythonのに上記のすべての構造を定義する必要がありますよう
(ctypes.Structure
を拡張します)。サイドノートとして
- は、私がかつて正確な状況にあった:私は[MSDN]: LsaLogonUser function(!!! 14個のおかしく引数!!!)を呼び出す必要がありました。もちろん、それはpywin32によってエクスポートされていなかったので、私はctypesの経由で呼ばれるが、私は書かなければならなかった:コードの
- 〜170行の構造(私は私のシナリオに必要なものだけを定義します)
- 〜50行をそれらを移入し、
- 1. Windows起動プログラム情報を取得
- 2. 初回起動時のiOSユーザー情報
- 3. 起動時の自動起動サービス
- 4. C#サービスのインストールと起動時の自動起動の設定
- 5. システム起動時のサービス
- 6. 起動時ドッカーマシン起動時
- 7. アプリケーション起動時のサービスのバインドと起動
- 8. 起動時のPythonスクリプトLinux
- 9. コンテナの起動時にサービスを起動します
- 10. debianサービスの起動時に桟橋を起動できない
- 11. 春3起動時の奇妙な情報
- 12. Pythonの起動情報を抑圧する方法は?
- 13. サービスを使用して起動時にブラウザ言語を取得
- 14. Android実装サービスと起動時にバックグラウンドで起動する
- 15. 起動時にサービス( `IServiceCollection`)を起動する方法
- 16. マイナス起動時のブートストラップアコーディオンの起動
- 17. 起動時に起動しない起動時にnginxを起動しない
- 18. Spring RESTサービスWAS7起動時の例外
- 19. 起動時のプログラムクラッシュと再起動
- 20. アプリケーション起動時のSwift起動アプリ
- 21. 起動ショートカットの取得
- 22. Windows 7起動時にプログラムを起動する(自動起動)
- 23. 起動時に起動されたサービスからのリソースへのアクセス
- 24. スクリプトの再起動時のPythonランタイムエラー
- 25. Windowsサービスが自動ではない再起動時に起動する
- 26. Android - 起動時にサービスを開始
- 27. postgres、ubuntu起動時にサービスを再起動するには?インスタンスの再起動後にクラスタリングに突入する
- 28. 起動時にアプリケーションを起動する
- 29. 起動時にiOSを起動する
- 30. 起動時に再起動アプリケーションを起動する