QueryServiceObjectSecurity-Funktion (winsvc.h)
Die QueryServiceObjectSecurity-Funktion ruft eine Kopie des Sicherheitsdeskriptors ab, der einem Dienstobjekt zugeordnet ist. Sie können auch die GetNamedSecurityInfo-Funktion verwenden, um eine Sicherheitsbeschreibung abzurufen.
Syntax
BOOL QueryServiceObjectSecurity(
[in] SC_HANDLE hService,
[in] SECURITY_INFORMATION dwSecurityInformation,
[out, optional] PSECURITY_DESCRIPTOR lpSecurityDescriptor,
[in] DWORD cbBufSize,
[out] LPDWORD pcbBytesNeeded
);
Parameter
[in] hService
Ein Handle für den Dienststeuerungs-Manager oder den Dienst. Handles an den Dienststeuerungs-Manager werden von der OpenSCManager-Funktion zurückgegeben, und Handles an einen Dienst werden entweder von der OpenService - oder CreateService-Funktion zurückgegeben. Das Handle muss über das zugriffsrecht READ_CONTROL verfügen.
[in] dwSecurityInformation
Eine Reihe von Bitflags, die den Typ der abzurufenden Sicherheitsinformationen angeben. Dieser Parameter kann eine Kombination der SECURITY_INFORMATION Bitflags sein, mit der Ausnahme, dass diese Funktion den LABEL_SECURITY_INFORMATION-Wert nicht unterstützt.
[out, optional] lpSecurityDescriptor
Ein Zeiger auf einen Puffer, der eine Kopie der Sicherheitsbeschreibung des angegebenen Dienstobjekts empfängt. Der aufrufende Prozess muss über den entsprechenden Zugriff verfügen, um die angegebenen Aspekte der Sicherheitsbeschreibung des Objekts anzuzeigen. Die SECURITY_DESCRIPTOR-Struktur wird im selbstrelativen Format zurückgegeben.
[in] cbBufSize
Die Größe des Puffers, auf den der parameter lpSecurityDescriptor in Bytes verweist. Die größte zulässige Größe beträgt 8 KB.
[out] pcbBytesNeeded
Ein Zeiger auf eine Variable, die die Anzahl von Bytes empfängt, die zum Zurückgeben der angeforderten Sicherheitsbeschreibungsinformationen benötigt werden, wenn die Funktion fehlschlägt.
Rückgabewert
Wenn die Funktion erfolgreich ist, ist der Rückgabewert ungleich Null.
Wenn die Funktion fehlerhaft ist, 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 Fehlercodes können von den Registrierungsfunktionen festgelegt werden, die vom Dienststeuerungs-Manager aufgerufen werden.
Rückgabecode | Beschreibung |
---|---|
|
Das angegebene Handle wurde nicht mit READ_CONTROL Zugriff geöffnet, oder der aufrufende Prozess ist nicht der Besitzer des Objekts. |
|
Der angegebene Handle ist ungültig. |
|
Die Sicherheitsdeskriptorinformationen sind zu groß für den puffer lpSecurityDescriptor . Die Anzahl der Bytes, die zum Abrufen aller Informationen erforderlich sind, wird im parameter pcbBytesNeeded zurückgegeben. Es wird nichts in den puffer lpSecurityDescriptor geschrieben. |
|
Die angegebenen Sicherheitsinformationen sind ungültig. |
Hinweise
Wenn ein Dienst erstellt wird, weist der Dienststeuerungs-Manager dem Dienstobjekt eine Standardsicherheitsbeschreibung zu. Um eine Kopie des Sicherheitsdeskriptors für ein Dienstobjekt abzurufen, rufen Sie die QueryServiceObjectSecurity-Funktion auf. Um die Sicherheitsbeschreibung zu ändern, rufen Sie die Funktion SetServiceObjectSecurity auf. Eine Beschreibung der Standardsicherheitsbeschreibung für ein Dienstobjekt finden Sie unter Dienstsicherheit und Zugriffsrechte.
Um den Besitzer, die Gruppe oder die DACL aus der Sicherheitsbeschreibung des Dienstobjekts zu lesen, muss dem aufrufenden Prozess READ_CONTROL Zugriff gewährt worden sein, als das Handle geöffnet wurde. Um READ_CONTROL Zugriff zu erhalten, muss der Aufrufer der Besitzer des Objekts sein, oder die DACL des Objekts muss dem Zugriff gewähren.
Um die SACL aus der Sicherheitsbeschreibung zu lesen, muss dem aufrufenden Prozess ACCESS_SYSTEM_SECURITY Zugriff gewährt worden sein, als das Handle geöffnet wurde. Der richtige Weg, um diesen Zugriff zu erhalten, besteht darin, die SE_SECURITY_NAME-Berechtigung im aktuellen Token des Aufrufers zu aktivieren, das Handle für ACCESS_SYSTEM_SECURITY Zugriff zu öffnen und dann die Berechtigung zu deaktivieren.
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 (einschließen von Windows.h) |
Bibliothek | Advapi32.lib |
DLL | Advapi32.dll |