Freigeben über


OpenServiceA-Funktion (winsvc.h)

Öffnet einen vorhandenen Dienst.

Syntax

SC_HANDLE OpenServiceA(
  [in] SC_HANDLE hSCManager,
  [in] LPCSTR    lpServiceName,
  [in] DWORD     dwDesiredAccess
);

Parameter

[in] hSCManager

Ein Handle für die Dienststeuerungs-Manager-Datenbank. Die OpenSCManager--Funktion gibt dieses Handle zurück. Weitere Informationen finden Sie unter Service Security and Access Rights.

[in] lpServiceName

Der Name des zu öffnenden Diensts. Dies ist der Name, der durch den parameter lpServiceName der CreateService Funktion angegeben wird, wenn das Dienstobjekt erstellt wurde, nicht der Anzeigename des Diensts, der von Benutzeroberflächenanwendungen angezeigt wird, um den Dienst zu identifizieren.

Die maximale Zeichenfolgenlänge beträgt 256 Zeichen. Die Datenbank des Dienststeuerungs-Managers behält die Groß-/Kleinschreibung bei, bei Dienstnamenvergleichen wird jedoch immer die Groß-/Kleinschreibung beachtet. Schrägstrich (/) und umgekehrter Schrägstrich (\) sind ungültige Zeichen des Dienstnamens.

[in] dwDesiredAccess

Der Zugriff auf den Dienst. Eine Liste der Zugriffsrechte finden Sie unter Service Security and Access Rights.

Bevor der angeforderte Zugriff gewährt wird, überprüft das System das Zugriffstoken des aufrufenden Prozesses anhand der diskretionären Zugriffssteuerungsliste des Sicherheitsdeskriptors, der dem Dienstobjekt zugeordnet ist.

Rückgabewert

Wenn die Funktion erfolgreich ist, ist der Rückgabewert ein Handle für den Dienst.

Wenn die Funktion fehlschlägt, ist der Rückgabewert NULL. Rufen Sie GetLastErrorauf, um erweiterte Fehlerinformationen zu erhalten.

Die folgenden Fehlercodes können vom Dienststeuerungs-Manager festgelegt werden. Andere können von den Registrierungsfunktionen festgelegt werden, die vom Dienststeuerungs-Manager aufgerufen werden.

Rückgabecode Beschreibung
ERROR_ACCESS_DENIED
Das Handle hat keinen Zugriff auf den Dienst.
ERROR_INVALID_HANDLE
Der angegebene Handle ist ungültig.
ERROR_INVALID_NAME
Der angegebene Dienstname ist ungültig.
ERROR_SERVICE_DOES_NOT_EXIST
Der angegebene Dienst ist nicht vorhanden.

Bemerkungen

Das zurückgegebene Handle ist nur für den Prozess gültig, der OpenService-aufgerufen wurde. Sie kann durch Aufrufen der CloseServiceHandle--Funktion geschlossen werden.

Um OpenService-zu verwenden, sind neben SC_MANAGER_CONNECTkeine Berechtigungen erforderlich.

Beispiele

Ein Beispiel finden Sie unter Starten eines Dienst-.

Anmerkung

Der winsvc.h-Header definiert OpenService als Alias, der automatisch die ANSI- oder Unicode-Version dieser Funktion basierend auf der Definition der UNICODE-Präprozessorkonstante auswählt. Das Mischen der Verwendung des codierungsneutralen Alias mit Code, der nicht codierungsneutral ist, kann zu Nichtübereinstimmungen führen, die zu Kompilierungs- oder Laufzeitfehlern führen. Weitere Informationen finden Sie unter Konventionen für Funktionsprototypen.

Anforderungen

Anforderung Wert
mindestens unterstützte Client- Windows XP [nur Desktop-Apps]
mindestens unterstützte Server- Windows Server 2003 [Nur Desktop-Apps]
Zielplattform- Fenster
Header- winsvc.h (enthalten Windows.h)
Library Advapi32.lib
DLL- Advapi32.dll

Siehe auch

ChangeServiceConfig-

CloseServiceHandle-

ControlService-

CreateService-

DeleteService-

EnumDependentServices-

OpenSCManager-

QueryServiceConfig-

QueryServiceDynamicInformation-

QueryServiceObjectSecurity-

QueryServiceStatusEx-

SCM Handles

Dienstfunktionen

SetServiceObjectSecurity

StartService-