- PR -

ASP.NETにて管理ツールのサービスを操作したいのですが

1
投稿者投稿内容
a24
会議室デビュー日: 2004/02/08
投稿数: 8
投稿日時: 2004-11-01 20:32
お世話になります。
ASP.NETにてVB.NETを使用して開発をしています。
現在Buttonが押下されたときに、管理ツールのサービスに登録している
あるサービスの状態を取得したり、サービスの開始または停止を
行いたいと思っています。(サービスはWindowsサービスで作成したものです。)
どのようにしたらいいのか、検討もつかないので
よろしければご教授頂けませんでしょうか?
宜しくお願い致します。
nanbu
大ベテラン
会議室デビュー日: 2004/08/19
投稿数: 178
投稿日時: 2004-11-01 21:02
南部です。

System.ServiceProcess.ServiceControllerのリファレンスを
読むと検討がつくと思います。
a24
会議室デビュー日: 2004/02/08
投稿数: 8
投稿日時: 2004-11-02 09:26
南部さん、ご返信ありがとうございます。
早速調べてみたいと思います。
a24
会議室デビュー日: 2004/02/08
投稿数: 8
投稿日時: 2004-11-02 11:29
お世話になります。

教えて頂いたSystem.ServiceProcess.ServiceControllerを使用して
コーディングをしてみたのですが、実行すると以下のエラーになります。
「コンピュータで ”サービス名” サービスを開けません。」
単純なことを見落としかもしれませんが、お気づきの点があれば
再びご教授頂きたいと思います。
素人で申し訳ありませんが、よろしくお願い致します。

【コード略】
Public Sub ServiceStart()
Dim o_Ctrl As New ServiceController("サービス名")
Try
If o_Ctrl.Status.Equals(ServiceControllerStatus.Stopped) Then
o_Ctrl.Start()  ←←←ここでエラーになります。
End If
Catch ex As Exception
Throw ex
End Try
End Sub

以上です。
nanbu
大ベテラン
会議室デビュー日: 2004/08/19
投稿数: 178
投稿日時: 2004-11-02 13:36
南部です。

権限不足だと思います。

OSがなにかはわかりませんが、どちらにしろ既定では
サービスを操作する権限はないはずです。

MSDNや他の書籍を参考に、適切な実装をして下さい。

とりあえず、提示されたコードの動作を確認するのであれば、
Web.configの
<system.web>の子要素に
<identity impersonate="true" userName="管理者ログインID" password="パスワード" />
を記述すれば、確認できます。

もしくは、
ご使用の仮想ディレクトリのディレクトリセキュリティで、認証方法を
統合Windows認証(匿名アクセスなし)にし、
<identity impersonate="true">
とすれば、ログインしたアカウント実行されます。
a24
会議室デビュー日: 2004/02/08
投稿数: 8
投稿日時: 2004-11-03 12:01
いつもありがとうございます。
南部さんの指摘された通りに、
Web.configの <system.web>の子要素を記述することで、
動作の方はうまくいく事が確認できました。
実環境でうまく実装するために、権限については勉強したいと思います。
1

スキルアップ/キャリアアップ(JOB@IT)