【发布时间】:2008-10-16 21:00:18
【问题描述】:
我有一个启用了 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(字符串 机器名称,Int32 serviceControlManaqerAccess) 在 System.ServiceProcess.ServiceController.GetServicesOfType(字符串 machineName, Int32 serviceType) 在 TelemarketingWebSite.Utilities.StartService()
感谢您的帮助/信息
【问题讨论】:
标签: asp.net security windows-services .net-2.0