繁体   English   中英

向非管理员用户授予访问权限以启动/停止服务Windows 7

[英]Grant access to non-admin user to start/stop services windows 7

我有一个Windows服务和一个Windows应用程序。我想从Windows应用程序中使用参数启动和停止该窗口服务。这就是我必须启动该服务的原因

  foreach (ServiceController sc in ServiceController.GetServices())
            {
                if (sc.ServiceName == "serviceName")
                {
                    //service is found
                    using (ServiceController serviceController = new ServiceController("serviceName"))
                    {
                        string[] args = new string[1];
                        args[0] = "Myargument";
                        if (serviceController.Status == ServiceControllerStatus.Running) 
                        {

                        }
                        else { serviceController.Start(args); }

                }
            }

但这使我无法在计算机'上打开服务。 使用app.manifest强制以管理员身份运行exception.I尝试,但它仍然给exception.I也试过这个职位在这里 ,但异常仍然there.Does任何一个知道如何授予访问权限在Windows 7来管理非管理员用户服务?

您可以使用SetServiceObjectSecuritySetNamedSecurityInfo更改服务的权限。

我有一些代码使用ConvertStringSecurityDescriptorToSecurityDescriptor创建安全描述符以传递给SetServiceObjectSecurity 给定一个安全描述符,您可以使用GetSecurityDescriptorDacl获取DACL来传递给SetNamedSecurityInfo

我用来创建安全描述符的SDDL字符串如下:

wchar_t sddl[] = L"D:"
  L"(A;;CCLCSWRPWPDTLOCRRC;;;SY)"           // default permissions for local system
  L"(A;;CCDCLCSWRPWPDTLOCRSDRCWDWO;;;BA)"   // default permissions for administrators
  L"(A;;CCLCSWLOCRRC;;;AU)"                 // default permissions for authenticated users
  L"(A;;CCLCSWRPWPDTLOCRRC;;;PU)"           // default permissions for power users
  L"(A;;RP;;;IU)"                           // added permission: start service for interactive users
  ;

当然,此代码将需要在提升的权限下运行。 通常,您将在安装服务的同时设置权限。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM