![](/img/trans.png)
[英]In C# how to stop/start/check whether registered or not if the Log On As account is of non-admin user?
[英]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來管理非管理員用戶服務?
您可以使用SetServiceObjectSecurity
或SetNamedSecurityInfo
更改服務的權限。
我有一些代碼使用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.