在UAC打开的服务器(Windows 2008 R2)上重新启动Windows服务(从ASP.NET应用程序)

时间:2012-05-21 10:17:52

标签: asp.net windows-services windows-server-2008 uac

我正在尝试从我的ASP.NET(.Net 4)应用程序重新启动Windows服务(应用程序的一部分),但它失败并出现错误:

Cannot open <ServiceName> service on computer '.'.
Inner Exception: Access is denied
StackTrace:  at System.ServiceProcess.ServiceController.GetServiceHandle(Int32 desiredAccess)
   at System.ServiceProcess.ServiceController.Start(String[] args)
   at NetClient.AvailabilityConfiguration.StartAvailabilityService(ServiceController serviceName, TimeSpan timeout)

代码在我的开发机器(Windoes 7)和测试服务器(Windows 2008 R2)上运行良好,但在生产服务器上失败。唯一(和BIG)的区别在于UAC在开发和测试服务器上关闭了生产serevr。

我尝试将app.manifest文件添加到Web应用程序以获取提升的权限,但似乎无效。我已将app.manifest“requestedExecutionLevel”属性配置为“requireAdministrator”,但似乎没有效果。

非常感谢任何帮助。

由于 阿菊

1 个答案:

答案 0 :(得分:0)

我认为很明显,运行网络池的帐户无权管理服务(特别是Start,Stop,Pause命令)。

查看您的池正在运行的帐户,并授予他管理服务器服务的权限。您可以使用组策略执行此操作,也可以打开安全模板。

阅读How to grant users rights to manage services in Windows Server

的官方详细步骤