Я хочу p/вызвать функцию windows api ChangeServiceConfig2 для установки описания и/или «начала задержки» для службы (и, возможно, больше). Особая вещь в том, что он принимает указатель на разные структуры в зависимости от того, что вы хотите изменить.Как p/вызвать ChangeServiceConfig2 из C#?
Например, чтобы изменить текст описания службы, вам нужно указать ее в структуру SERVICE_DESCRIPTION и изменить флаг задержки, который вы укажете на структуру SERVICE_DELAYED_AUTO_START_INFO.
Я решил эту проблему, создав несколько перегруженные функции апи так:
private static extern bool ChangeServiceConfig2(IntPtr hService, int dwInfoLevel, [MarshalAs(UnmanagedType.Struct)] ref SERVICE_DESCRIPTION lpInfo);
private static extern bool ChangeServiceConfig2(IntPtr hService, int dwInfoLevel, [MarshalAs(UnmanagedType.Struct)] ref SERVICE_DELAYED_AUTO_START_INFO lpInfo);
Я хочу спросить, если есть лучшее решение, которое не требует другого дюжину перегрузкам, если я хочу, чтобы полностью прототип это?
Дубликат [этого] (http://stackoverflow.com/questions/23270920/set-existing-service-to-auto-delayed-start)? –
Нет, не совсем ... Вопрос о прототипировании P/Invoke, а не о том, как настроить службу на отложенный старт ... – wexman
Я понимаю. Я понял, что в этом Q & A проблема прототипирования была решена: вы проверили [pinvoke.net] (http://pinvoke.net/default.aspx/advapi32/ChangeServiceConfig2.html)? –