做了个WebApplication,代码如下:ServiceController lServiceController = new ServiceController(mServiceName);
lServiceController.MachineName = Environment.MachineName;
... ...
lServiceController.Start();
调试走到lServiceController.Start();的时候报错:无法打开计算机**上的**服务。网上查了原因,可能是需要管理权限来启动和停止,可怎么获得管理权限呢?

解决方案 »

  1.   

    wuyq11 原因解释的对的,但解决方法我不是很推荐。你的WebApplication 默认是run在NETWORK SERVICE账号下的。没有足够权限打开和查找Windows Service。所以出现上述找不到Windows Service的错误。解决方法是在必须的时候提升权限。本地系统权限过高。给一个web app一直这么高的权限,虽然可以解决问题,但绝对存在安全隐患。推荐的做法是:
    1. 取决于你的service的性质,考虑修改service 的DACL,允许NETWORK SERVICE来启动service。
    如果我记得没错的话,可以使用SC 命令修改service DACL。 
    2. 开一个web service或scheduled task,该web service负责这种需要高权限的操作。将这个web service配置run在一个用户的app pool下。然后你的web app 调用这个web service。