如何创建一个启动和停止多个'exe'/'bat的Windows服务
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何创建一个启动和停止多个'exe'/'bat的Windows服务相关的知识,希望对你有一定的参考价值。
我正在尝试创建一个Windows服务,将管理启动多个exe
s / bat
文件。
到目前为止,我已经遵循这个guide,并能够使用以下代码启动exe。但是,当我停止服务时,衍生的exe似乎是分离的,我不确定如何以编程方式杀死它。
最终我想开始和停止许多不同的bat
s和exe
s。
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Diagnostics;
using System.Linq;
using System.ServiceProcess;
using System.Text;
using System.Threading.Tasks;
using System.Timers;
using System.Runtime.InteropServices;
namespace SomeService
{
public partial class Service1 : ServiceBase
{
public Service1()
{
InitializeComponent();
}
protected override void OnStart(string[] args)
{
Process.Start("C:\\Users\\JohnnySmalls\\SomeProgram\\bin\\theExe.exe");
}
protected override void OnStop()
{
// Need to close process, I don't have a reference to it though
// Process.Close();
}
}
}
答案
你可以做这样的事情
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Diagnostics;
using System.Linq;
using System.ServiceProcess;
using System.Text;
using System.Threading.Tasks;
using System.Timers;
using System.Runtime.InteropServices;
namespace SomeService
{
public partial class Service1 : ServiceBase
{
private List<Process> _processes;
public Service1()
{
InitializeComponent();
_processes = new List<Process>();
}
protected override void OnStart(string[] args)
{
var process = Process.Start("C:\\Users\\JohnnySmalls\\SomeProgram\\bin\\theExe.exe");
_processes.Add(process);
}
protected override void OnStop()
{
// Need to close process, I don't have a reference to it though
// Process.Close();
foreach(var process in _processes) {
process.Close();
}
}
}
}
以上是关于如何创建一个启动和停止多个'exe'/'bat的Windows服务的主要内容,如果未能解决你的问题,请参考以下文章
ImportError: 当使用pyinstaller创建一个.exe时,无法导入名称'pywrap_tensorflow'。