Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/google-sheets/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在C#中,如果登录帐户是非管理员用户,如何停止/启动/检查是否已注册?_C#_Service - Fatal编程技术网

在C#中,如果登录帐户是非管理员用户,如何停止/启动/检查是否已注册?

在C#中,如果登录帐户是非管理员用户,如何停止/启动/检查是否已注册?,c#,service,C#,Service,我有一个服务,它的LogOnAs不是本地系统。它是另一个用户(比如说使用管理权限测试)。使用普通代码:不工作,它总是抛出异常 public bool IsServiceInstalled(String serviceName) { bool IsInstalled = false; // get list of Windows services ServiceController[] services = ServiceControll

我有一个服务,它的LogOnAs不是本地系统。它是另一个用户(比如说使用管理权限测试)。使用普通代码:不工作,它总是抛出异常

 public  bool IsServiceInstalled(String serviceName)
    {
        bool IsInstalled = false;
        // get list of Windows services
        ServiceController[] services = ServiceController.GetServices();

        // try to find service name
        foreach (ServiceController service in services)
        {
            if (service.ServiceName == serviceName)
            {
                IsInstalled = true;
                break;
            }
        }
        return IsInstalled;
    }

非常感谢您的帮助……

首先,您可以通过以下方式简化您的逻辑:

public  bool IsServiceInstalled(String aServiceName)
{
   ServiceController sc = ServiceController.GetServices()
       .FirstOrDefault(s => s.ServiceName == aServiceName);

   return (sc != null) ;
}
这将使用linq获取第一个与传递的名称匹配的服务(我已将参数更改为
aServiceName
a
代表参数)

它不会解决您的问题,但更易于阅读和维护


当你正常登录时,这对你有用吗

当我正常登录时,它实际上对我有效…因为我只对它是否注册感兴趣…所以它解决了我的问题。。非常感谢…很高兴它有帮助。如果它解决了您的问题,您可以将其标记为已回答:)。