我有一个启用了 Windows 身份验证的网站。从网站中的一个页面,用户可以启动一个对数据库做一些事情的服务。
启动服务对我来说很好,因为我是服务器上的本地管理员。但我只是让一个用户测试它,他们无法启动服务。
我的问题是:
有谁知道使用与他们当前登录的帐户不同的 Windows 帐户按名称在指定计算机上获取服务列表的方法?
我真的不想将需要启动服务的所有用户添加到 Windows 组中,并将它们全部设置为我的 IIS 服务器上的本地管理员.....
这是我得到的一些代码:
public static ServiceControllerStatus FindService()
{
ServiceControllerStatus status = ServiceControllerStatus.Stopped;
try
{
string machineName = ConfigurationManager.AppSettings["ServiceMachineName"];
ServiceController[] services = ServiceController.GetServices(machineName);
string serviceName = ConfigurationManager.AppSettings["ServiceName"].ToLower();
foreach (ServiceController service in services)
{
if (service.ServiceName.ToLower() == serviceName)
{
status = service.Status;
break;
}
}
}
catch(Exception ex)
{
status = ServiceControllerStatus.Stopped;
SaveError(ex, "Utilities - FindService()");
}
return status;
}
我的异常来自 try 块中的第二行。这是错误:
System.InvalidOperationException:无法在计算机“server.domain.com”上打开服务控制管理器。此操作可能需要其他权限。---> System.ComponentModel.Win32Exception:访问被拒绝---内部异常堆栈跟踪结束---在 System.ServiceProcess.ServiceController.GetDataBaseHandleWithAccess(String machineName, Int32 serviceControlManaqerAccess) 在 System.ServiceProcess.ServiceController.GetServicesOfType(String machineName, Int32 serviceType) 在 TelemarketingWebSite.Utilities.StartService()
感谢您的帮助/信息