4

C# を使用して Windows サービスを強制終了するには、次のオプションを使用してサービスを強制終了する必要があります。

コマンドから:

sc queryex ServiceName

PIDサービスの を発見した後

taskkill /pid 1234(exemple) /f
4

4 に答える 4

4

読みやすくするために、IsServiceInstalled、IsServiceRunning、StopService などの個別のメソッドを使用して、サービスの相互作用を独自のクラスに分離します。

また、サービスを停止することで、すでにプロセスを強制終了する必要がありますが、そのようなことを行う方法も含めました。サービスが停止せず、プロセスを強制終了して停止している場合、アクセスできるサービスコードが正しく構築されていないかどうかを確認します。

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.ServiceProcess;
using System.Diagnostics;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            ServiceController sc = ServiceController.GetServices().FirstOrDefault(s => s.ServiceName.Equals("MyServiceNameHere"));
            if (sc != null)
            {
                if (sc.Status.Equals(ServiceControllerStatus.Running))
                {
                    sc.Stop();

                    Process[] procs = Process.GetProcessesByName("MyProcessName");
                    if (procs.Length > 0)
                    {
                        foreach (Process proc in procs)
                        {
                            //do other stuff if you need to find out if this is the correct proc instance if you have more than one
                            proc.Kill();
                        }
                    }
                }
            }
        }
    }
}
于 2014-04-11T14:00:54.587 に答える
0

プロセス ID がわかっている場合は、Process.GetProcessById(Id).Kill(); を使用します。プロセス名がわかっている場合は、Process.GetProcessesByName(name).Kill(); を使用します。

于 2014-04-11T13:52:40.603 に答える