public void SetRequiredPrivileges(System.Collections.Generic.IEnumerable <string> privileges) { var requiredPrivileges = new System.Text.StringBuilder(); foreach (var privilege in System.Linq.Enumerable.Append(privileges, "")) { requiredPrivileges.Append(privilege); requiredPrivileges.Append('\0'); } var requiredPrivilegesInfo = new SERVICE_REQUIRED_PRIVILEGES_INFO { RequiredPrivileges = System.Runtime.InteropServices.Marshal.StringToHGlobalAnsi(requiredPrivileges.ToString()) }; try { if (ChangeServiceConfig2WithRequiredPrivilegesInfo(ServiceHandle, ServiceConfig2InfoLevel.SERVICE_CONFIG_REQUIRED_PRIVILEGES_INFO, ref requiredPrivilegesInfo) == 0) { throw new System.ComponentModel.Win32Exception("Unable to set service required privileges"); } } finally { System.Runtime.InteropServices.Marshal.FreeHGlobal(requiredPrivilegesInfo.RequiredPrivileges); } }
static extern int ChangeServiceConfig2WithRequiredPrivilegesInfo( System.IntPtr hService, ServiceConfig2InfoLevel dwInfoLevel, ref SERVICE_REQUIRED_PRIVILEGES_INFO lpInfo);