Я использую advapi32.dll, так как имею полный контроль над установкой. Мои службы регистрируют себя, задают описания (хотя я использую sc.exe), устанавливаем зависимости, устанавливаем перезапуск при сбоях (также использующих sc.exe) и т. Д.
API ChangeServiceConfig2 должен задавать описания, но, похоже, не работает в .NET
Зависимость устанавливается API-интерфейсом CreateService.
[DllImport("advapi32.dll", SetLastError = true, CharSet = CharSet.Unicode)]
internal static extern UIntPtr CreateService(UIntPtr SC_HANDLE, string lpSvcName, string lpDisplayName,
uint dwDesiredAccess, uint dwServiceType, uint dwStartType, uint dwErrorControl, string lpPathName,
string lpLoadOrderGroup, string lpdwTagId, string lpDependencies, string lpServiceStartName, string lpPassword);