人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

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

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

●質問者: mukoubuti
●カテゴリ:コンピュータ 生活
✍キーワード:C# Windows コントロール サービス デバッグ
○ 状態 :終了
└ 回答数 : 1/1件

▽最新の回答へ

1 ● hissssa
●40ポイント

http://www.google.co.jp/

Google

URLはダミーです。


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


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


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


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

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ