2016-06-06 5 views
0

Ich möchte p/aufrufen die Windows API-Funktion ChangeServiceConfig2 zum Festlegen der Beschreibung und/oder "Start verzögert" -Flag für einen Dienst (und möglicherweise mehr). Das Besondere daran ist, dass je nach dem, was Sie ändern möchten, ein Zeiger auf verschiedene Strukturen verwendet wird.Wie purchase ChangeServiceConfig2 von C#?

Um beispielsweise den Beschreibungstext eines Service zu ändern, müssen Sie ihn auf eine SERVICE_DESCRIPTION-Struktur verweisen und das verzögerte Flag so ändern, dass Sie auf eine SERVICE_DELAYED_AUTO_START_INFO-Struktur verweisen.

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); 

Ich möchte fragen, ob es eine bessere Lösung ist, die ein weiteres Dutzend oder so Überlastungen nicht erfordern würde, wenn ich völlig wollen:

Ich habe dies mehrere Überlastungen der api-Funktion durch die Schaffung wie diese gelöst Prototyp es?

+0

Duplizieren [von diesem] (http://stackoverflow.com/questions/23270920/set-existing-service-to-auto-delayed-start)? –

+0

Nein, nicht wirklich ... Die Frage ist über Prototyping der P/Invoke, nicht wie man einen Dienst auf verzögerte Start einstellen ... – wexman

+0

Ich verstehe. Ich dachte mir, dass in diesem Q & A, dass Prototyping Problem gelöst wurde: Haben Sie [pinvoke.net] (http://pinvoke.net/default.aspx/advapi32/ChangeServiceConfig2.html) überprüft? –

Antwort

0

nahm einfach einen Blick in den Code der Serviceinstaller-Klasse und fand heraus, dass sie es auf die gleiche Weise tun, so kann es nicht alles falsch sein ... obwohl

Noch offen für Anregungen.

Verwandte Themen