我试过了 System.ServiceProcess.ServiceController 的System.Diagnostics.Process;
在我的网络表单中控制Windows服务。
使用System.ServiceProcess.ServiceController
我将获得拒绝访问权限。
System.Diagnostics.Process
我什么都没得到。我怎么能用我的网络表单启动/停止Windows服务呢?
答案 0 :(得分:5)
以下是要完成的重点:
1您需要添加 应用程序中的System.ServiceProcess引用。此命名空间 保存ServiceController类以访问窗口服务。
2您需要先检查窗口服务的状态 明确地开始或停止它。
3默认情况下,IIS应用程序在ASP.NET帐户下运行 没有窗口服务的访问权限。非常非常 该解决方案的重要部分是:假冒。你需要 使用用户凭据模拟应用程序/部分代码 拥有访问窗口的适当权限和权限 服务。
请参阅asp.net中的此博客条目 还要看看这个https://stackoverflow.com/a/17497084/1641556
答案 1 :(得分:2)
Knelis是正确的,我认为你只需要另一个过程来做到这一点。也许你自己的Windows服务,在本地系统下运行,并提供wcf服务来控制Windows服务,你的网络应用程序可以调用wcf服务。
答案 2 :(得分:0)
请按照以下步骤启动/停止窗口服务:
1)要访问Windows服务,您需要在控制器中添加以下名称空间:
using System.ServiceProcess;
如果在添加上述命名空间时由于“找不到命名空间名称'ServiceController'”而出现错误,则需要使用“添加引用”进行添加。有关更多详细信息,请在此处查看我的博客
2)将以下代码添加到您的控制器中:
ServiceController service = new ServiceController("Test Windows Service");
service.Start();
它将启动您的服务。 来源:http://sforsuresh.in/starting-windows-services-c-mvc-4/