【windowsのサービスの状態を設定したい。】

自作プログラムのデバッグ(C#)をしています。
windowsのサービス(例:Messenger等)を以下のような状態に意図的にしたいのですが方法が分かりません。
ServiceController.Statusの値は読み取り専用っぽいので、、、
ご存知の方いらっしゃいましたら教えていただけるとありがたいです。よろしくお願いいたします。
RunnningとStoppedはコントロールパネルの管理ツールからできましたがそれ以外ができません。
StartPending、StopPendingは同様の手順で試したのですが、なぜかできません。

ContinuePending サービスの継続は保留中です。
Paused サービスは一時中断されています。
PausePending サービスの一時中断は保留中です。
Running サービスは実行中です。
StartPending サービスは開始中です。
Stopped サービスは実行されていません。
StopPending サービスは停止中です。

回答の条件
  • URL必須
  • 1人2回まで
  • 登録:2005/12/28 12:48:34
  • 終了:--

回答(1件)

id:hissssa No.1

hissssa回答回数424ベストアンサー獲得回数1282005/12/28 14:20:42

ポイント40pt

URLはダミーです。


サービスを外部から意図的にxxxPendingにするのは無理です。これらは、サービスが状態の移行過程にあるときに報告されるステータスですから。Windowsサービスの状態は、基本的にはStart・Stop・Pauseしかありません。で、これらの状態から他の状態に変化する途中の時間帯だけ、xxxxPendingになるんです。


たとえばサービスを停止状態から開始する場合、最初サービスプロセスは外部からスタートシグナルを受信します。このシグナルを受け取ってサービスは自分自身を開始し、自分の状態を「Stopped」から「Running」に変化させますが、サイズの大きいサービスの場合は開始が即座には終わりません。そこで、開始が完了するまでの間は自分のサービス状態を「StartPending」にしておくのです。


このように、サービスのステータス情報は、サービスプロセス自身の動作報告から現れるものなので、外部から書き換えるのは不可能であり、それ以前に無意味です。また、意図的にxxxPendingにすることも不可能です。


どうしてもxxxPendingの状態を捉えたければ、何か起動・停止に時間のかかるサービスをインストールして試すしかないでしょう。ただ、そのサービスが手抜きな作りだと、起動・停止中の状態を報告しないこともあるので絶対とは言えませんが。

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません