サービスの開始と停止の自動化に小さな問題があります。サービスのリストを開いservices.msc
て見ると、すべて名前が付いています。ただし、このコードを実行すると、次のようになります。
Dim objService As Object
Dim objSet As Object
IsServiceRunning = False
Set objSet = GetObject("winmgmts:").ExecQuery("SELECT * FROM Win32_Service")
For Each objService In objSet
If (UCase(strServiceName) = UCase(objService.Name)) And (UCase(objService.State) = UCase("Running")) Then
IsServiceRunning = True
End If
Next
値はリスト内のobjService.Name
名前と同じではありません。たとえば、「Computer Browser」は単なる「ブラウザ」、「Distributed File System」は「dfs」、「NetLogon」は「netlogon」です。このobjServiceオブジェクトからこれらのサービスの完全で長い名前を取得する方法はありますか?これを回避することはできますが、コードをわかりやすくするために、サービスが実行されているかどうかを判断し、NET START
またはNET STOP
コマンドライン呼び出しを行い、ログに記録するために同じ値を使用します。