none
プロセスがSCMに起動されたのかどうかは判定できる?(もしかするとSTARTUPINFOで?) RRS feed

  • 質問

  • VC9.0でXP以降用のサービスプログラムを書いています。このプログラムはサービスとしてSCMから呼ばれるほか、単独で起動するとサービスを起動して終わるという動作をすることになっています。

    現在、プログラムが単独で起動されたのかサービスとしてSCMから起動されたのかは、SCMにサービス状態を問い合わせ、SERVICE_START_PENDINGであるかどうかで判定していますが、これはタイミングが重なったときのことを考えると危うい判定ですよね。

    確実な判定法はないかと思い調べていますが見つかりません。

    STARTUPINFOを調べたところ、SCM起動の場合にはdwFlagsに0x40000000のビットが立っているということがわかりました。これって判定に使えるものでしょうか? API資料には0x40000000なんてビットのことはどこにも書いていません……

    2011年9月8日 1:09