バッチファイルを使用してWindowsサービスを有効または無効にする方法はありますか?私は、サービスの起動タイプを変更すること、つまり、NetStartおよびNetStopコマンドを使用して開始および停止しないことを有効または無効にすることについて話しています。
5 に答える
sc config <service_name> start= disabled
このコマンドにはいくつかの機能がありますが、1つは、システムの起動時にサービスのステータスを判別することです。サービスは、自動、手動、またはまったく実行しないように設定できます。コマンドは
sc config ServiceName start= flag
ここで、ServiceNameはサービスの名前であり、フラグにはauto、demandのいずれかの値があります。または無効。たとえば、サービスを手動で実行するように設定するには、コマンドは次のようになります。
sc config ServiceName start= demand
等号の後にスペースが必要であることに注意してください。パラメーターServiceNameの正しい値は必ずしも明らかではない場合があり、次のコマンドを使用してすべてのサービスでそれを見つけることができます。
sc config <service_name> start= disabled
答えと質問があります。実行中のサービスを無効にするために、この1行をまとめました
sc query "wsearch"| find "RUNNING" >nul 2>&1 && net stop "wsearch" && sc config "wsearch" start= disabled
これにより、無効にして停止する前にサービスがチェックされます。マニュアルに変更したいものもあります。
誰かがこのスニペットをループに入れるのを手伝ってもらえますか
for loop sc query "wsearch"| find "RUNNING" >nul 2>&1 && net stop "wsearch" && sc config "wsearch" start= disabled
servicename1 servicename2 servicename3endif....。
このようにして、セグメントを作成し、ステータスを変更するすべてのサービスを1つのファイルに入力できます。
sc \\servername config <service_name> Start= auto >> c:\temp\sc.txt
サービスの開始タイプを変更し、出力をに記録しますc:\temp\sc.txt
。
sc \\servername start <service_name> >> c:\temp\sc1.txt
サービスを開始し、出力をに記録しますc:\temp\sc.txt
。
これは少し遅いと思いますが、将来これに遭遇する可能性がある人のために、これは私がDBバックエンドで作成した小さなアプリケーションスニペットであり、配列を構築し、ループして、
For SrvLoop As Integer = 0 To UBound(SrverName) - 1
services = ServiceController.GetServices(SrverName(SrvLoop))
For Each ChkLV In myobj.Items
Srv = ChkLV.SubItems(3).Text
i = ChkLV.SubItems(0).Text
If ChkLV.Selected = True And Srv = SrverName(SrvLoop) Then
Select Case Command
Case 1
If services(i).Status <> ServiceControllerStatus.Running Then
services(i).Start()
Else
MsgBox("Cannot Start a Service that is already Running", MsgBoxStyle.Information)
End If
Case 2
'If services(i).CanStop Then
If services(i).Status <> ServiceControllerStatus.Stopped Then
services(i).Stop()
'Else
' If services(i).Status <> ServiceControllerStatus.Stopped Then
' MsgBox("Service not able to be stopped currently" & vbCrLf & "Please try again in a few seconds", MsgBoxStyle.Information)
' End If
End If
End Select
Progress.PB_Progress_Bar.Value += 1
End If
Next
Next
Progress.Dispose()