開始、停止させる任意のサービス名を引数として渡したい
- 題名: 開始、停止させる任意のサービス名を引数として渡したい
- 著者: ぱそこんオヤジ
- 日時: 2005/07/03 18:49:29
- ID: 11597
- この記事の返信元:
- この記事への返信:
- ツリーを表示
- 題名: Re[1]: 開始、停止させる任意のサービス名を引数として渡したい
- 著者: 渋木宏明(ひどり)
- URL: http://hidori.jp/
- 日時: 2005/07/03 19:42:49
- ID: 11598
- この記事の返信元:
- この記事への返信:
- ツリーを表示
- 題名: Re[2]: 開始、停止させる任意のサービス名を引数として渡したい
- 著者: ぱそこんオヤジ
- 日時: 2005/07/03 20:26:24
- ID: 11600
- この記事の返信元:
- この記事への返信:
- ツリーを表示
- 題名: Re[3]: 開始、停止させる任意のサービス名を引数として渡したい
- 著者: 渋木宏明(ひどり)
- URL: http://hidori.jp/
- 日時: 2005/07/03 22:40:56
- ID: 11601
- この記事の返信元:
- この記事への返信:
- ツリーを表示
- 題名: Re[4]: 開始、停止させる任意のサービス名を引数として渡したい
- 著者: ぱそこんオヤジ
- 日時: 2005/07/03 22:53:21
- ID: 11602
- この記事の返信元:
- この記事への返信:
- ツリーを表示
- 題名: Re[1]: 開始、停止させる任意のサービス名を引数として渡したい
- 著者: おおた
- 日時: 2005/07/04 7:14:35
- ID: 11603
- この記事の返信元:
- この記事への返信:
- ツリーを表示
- 題名: Re[2]: 開始、停止させる任意のサービス名を引数として渡したい
- 著者: ぱそこんオヤジ
- 日時: 2005/07/04 13:51:01
- ID: 11609
- この記事の返信元:
- この記事への返信:
- ツリーを表示
- 題名: Re[3]: 開始、停止させる任意のサービス名を引数として渡したい
- 著者: おおた
- 日時: 2005/07/06 7:13:14
- ID: 11629
- この記事の返信元:
- この記事への返信:
- ツリーを表示
- 題名: Re[4]: 開始、停止させる任意のサービス名を引数として渡したい
- 著者: ぱそこんオヤジ
- 日時: 2005/07/06 19:45:03
- ID: 11645
- この記事の返信元:
- この記事への返信:
- ツリーを表示
- 題名: Re[5]: 開始、停止させる任意のサービス名を引数として渡したい
- 著者: おおた
- 日時: 2005/07/07 7:26:07
- ID: 11647
- この記事の返信元:
- この記事への返信:
- ツリーを表示
- 題名: Re[6]: 開始、停止させる任意のサービス名を引数として渡したい
- 著者: ぱそこんオヤジ
- 日時: 2005/07/08 20:24:22
- ID: 11704
- この記事の返信元:
- この記事への返信:
- ツリーを表示
分類:[.NET]
【解決したい問題】
現在バッチファイルに組み込んで使用するのを前提と
してConsole上から任意のサービス名を引数として渡し
サービスを開始、停止させるプログラムを作成しています。
大部分をどぼん!様作成のSapleを参考にさせて頂きました。
Imports System.ServiceProcess
Module Module1
Sub Main(ByVal CmdArgs() As String)
Dim cmd As String
For Each cmd In CmdArgs
Next
'ServiceControllerオブジェクトの作成
Dim sc As New ServiceController("cmd", ".")
If cmd = "" Then
Console.WriteLine("サービス名を指定して下さい")
'サービスが停止していれば、開始する
ElseIf sc.Status = ServiceControllerStatus.Stopped Then
sc.Start()
Console.WriteLine("サービスを開始します")
ElseIf sc.Status = ServiceControllerStatus.StartPending Then
'サービスが開始するまで3分待機する
sc.WaitForStatus(ServiceControllerStatus.Running, New TimeSpan(0, 0, 180))
ElseIf sc.Status = ServiceControllerStatus.StartPending Then
Console.WriteLine("サービスを開始出来ませんでした")
Else
'サービスが開始していれば、停止する
If sc.CanStop Then
sc.Stop()
Console.WriteLine("サービスを停止します")
'サービスが停止するまで3分待機する
sc.WaitForStatus(ServiceControllerStatus.Stopped, New TimeSpan(0, 0, 180))
ElseIf sc.Status = ServiceControllerStatus.StopPending Then
Console.WriteLine("サービスを停止出来ませんでした")
End If
End If
End Sub
End Module
引数を指定せず実行した場合は意図した通りになります。
しかし引数にサービス名(例:Telnet)を指定して実行する
とエラーになります。
書籍などで自分なりに調べたのですが
> Dim sc As New ServiceController("cmd", ".")
の部分のcmdに変数は使えないような(弱気)サービス名
そのものを指定するとエラーも無く動作致します。
齢37にしてプログラムの勉強を始めたおじさんに
助力を頂ければ大変嬉しいです。
長文になってしまいましたがよろしくお願いいたします。