Это не очень хороший подход ИМО.Веб-приложения должны быть изолированы в браузере и не должны каким-либо образом получать доступ к системным ресурсам.Возможно, вы захотите создать веб-службу WCF-оболочки, которая будет вызываться службой Windows, и ваше веб-приложение сможет затем получить доступ к веб-службе.
Для ответа на проблему:
Исходная ссылка для кода :
private void Page_Load(object sender, System.EventArgs e)
{
string PcName = "PC Name";
WindowsImpersonationContext wic = null;
try
{
IPrincipal p = this.User;
WindowsIdentity id = (WindowsIdentity)p.Identity;
Response.Write("Running as:" + WindowsIdentity.GetCurrent().Name + "<br>");
wic = id.Impersonate();
Response.Write("Running as:" + WindowsIdentity.GetCurrent().Name + "<br>");
ServiceController[] services = ServiceController.GetServices();
for(int i = 0; i < services.Length; i++)
{
if (services[i].DisplayName == "COM+ System Application")
{
Response.Write(services[i].DisplayName + " - ");
Response.Write(services[i].Status.ToString());
Response.Write("<br>");
ServiceController sc = new ServiceController(services[i].DisplayName,PcName);
if (sc.Status == ServiceControllerStatus.Running)
{
sc.Stop();
}
if (sc.Status == ServiceControllerStatus.Stopped)
{
sc.Start();
}
}
}
}
catch(Exception err )
{
Response.Write(err.Message);
}
finally
{
wic.Undo();
}
}
Но вы можете столкнуться с проблемами безопасности, поэтому взгляните на все ответы в теме.