簡體   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