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 Datenbank des Dienststeuerungs-Managers. Die OpenSCManager-Funktion gibt dieses Handle zurück. Weitere Informationen finden Sie unter Dienstsicherheit und Zugriffsrechte.

[in] lpServiceName

Der Name des zu öffnenden Diensts. Dies ist der Name, der vom lpServiceName-Parameter der CreateService-Funktion angegeben wurde, als das Dienstobjekt erstellt wurde, nicht der Dienstanzeigename, der von Benutzeroberflächenanwendungen zur Identifizierung des Diensts angezeigt wird.

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

[in] dwDesiredAccess

Der Zugriff auf den Dienst. Eine Liste der Zugriffsrechte finden Sie unter Dienstsicherheit und Zugriffsrechte.

Bevor der angeforderte Zugriff gewährt wird, überprüft das System das Zugriffstoken des aufrufenden Prozesses anhand der zugriffskontrollbasierten Liste 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 bei der Funktion ein Fehler auftritt, ist der Rückgabewert NULL. Um erweiterte Fehlerinformationen zu erhalten, rufen Sie GetLastError auf.

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
Das angegebene Handle ist ungültig.
ERROR_INVALID_NAME
Der angegebene Dienstname ist ungültig.
ERROR_SERVICE_DOES_NOT_EXIST
Der angegebene Dient ist nicht vorhanden.

Hinweise

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

Für die Verwendung von OpenService sind außer SC_MANAGER_CONNECT keine Berechtigungen erforderlich.

Beispiele

Ein Beispiel finden Sie unter Starten eines Diensts.

Hinweis

Der winsvc.h-Header definiert OpenService als Alias, der die ANSI- oder Unicode-Version dieser Funktion basierend auf der Definition der UNICODE-Präprozessorkonstante automatisch 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
Unterstützte Mindestversion (Client) Windows XP [nur Desktop-Apps]
Unterstützte Mindestversion (Server) Windows Server 2003 [nur Desktop-Apps]
Zielplattform Windows
Kopfzeile winsvc.h (windows.h einschließen)
Bibliothek Advapi32.lib
DLL Advapi32.dll

Weitere Informationen

ChangeServiceConfig

CloseServiceHandle

ControlService

CreateService

DeleteService

EnumDependentServices

OpenSCManager

QueryServiceConfig

QueryServiceDynamicInformation

QueryServiceObjectSecurity

QueryServiceStatusEx

SCM-Handles

Dienstfunktionen

SetServiceObjectSecurity

Startservice