我有一个ASP.NET MVC2服务,它由基于cassini / http.sys的Web服务器托管。服务进程以本地管理员身份运行。
不,我想使用以下方式阅读服务的状态:
using (var sc = new ServiceController(_ServiceName))
{
return sc.Status == ServiceControllerStatus.Running;
}
这很有效,然后假冒了。但我想使用Windows身份验证和模拟。所以当我添加
<identity impersonate="true" />
到web.config。对sc.Status的调用因InvalidOperationException而失败。内部异常是Win32Exception / ACCESS_DENIED。
"System.InvalidOperationException" caught.
Message=Cannot open service 'abcd' on computer '.' .
Source=System.ServiceProcess
StackTrace:
at System.ServiceProcess.ServiceController.GetServiceHandle(Int32 desiredAccess)
at System.ServiceProcess.ServiceController.Start(String[] args)
at System.ServiceProcess.ServiceController.Start()
InnerException: System.ComponentModel.Win32Exception
Message=Access denied
ErrorCode=-2147467259
NativeErrorCode=5
InnerException:
模拟身份与流程标识相同。那么,为什么模仿身份的访问权限比流程身份更少?如何避免这种情况?
系统:Windows 7,启用UAC