SetSecurityInfo-Funktion (aclapi.h)

Die SetSecurityInfo-Funktion legt die angegebenen Sicherheitsinformationen im Sicherheitsdeskriptor eines angegebenen Objekts fest. Der Aufrufer identifiziert das Objekt durch ein Handle.

Um die SACL eines Objekts festzulegen, muss der Aufrufer über die berechtigung SE_SECURITY_NAME aktiviert sein.

Syntax

DWORD SetSecurityInfo(
  [in]           HANDLE               handle,
  [in]           SE_OBJECT_TYPE       ObjectType,
  [in]           SECURITY_INFORMATION SecurityInfo,
  [in, optional] PSID                 psidOwner,
  [in, optional] PSID                 psidGroup,
  [in, optional] PACL                 pDacl,
  [in, optional] PACL                 pSacl
);

Parameter

[in] handle

Ein Handle für das Objekt, für das Sicherheitsinformationen festgelegt werden sollen.

[in] ObjectType

Ein Member der SE_OBJECT_TYPE-Enumeration , das den Typ des Objekts angibt, das durch den Handle-Parameter identifiziert wird.

[in] SecurityInfo

Eine Reihe von Bitflags, die den Typ der festzulegenden Sicherheitsinformationen angeben. Dieser Parameter kann eine Kombination der SECURITY_INFORMATION Bitflags sein.

[in, optional] psidOwner

Ein Zeiger auf eine SID, die den Besitzer des Objekts identifiziert. Die SID muss eine sein, die als Besitzer-SID einer Sicherheitsbeschreibung zugewiesen werden kann. Der SecurityInfo-Parameter muss das OWNER_SECURITY_INFORMATION-Flag enthalten. Dieser Parameter kann NULL sein, wenn Sie die Besitzer-SID nicht festlegen.

[in, optional] psidGroup

Ein Zeiger auf eine SID, die die primäre Gruppe des Objekts identifiziert. Der SecurityInfo-Parameter muss das GROUP_SECURITY_INFORMATION-Flag enthalten. Dieser Parameter kann NULL sein, wenn Sie die primäre Gruppen-SID nicht festlegen.

[in, optional] pDacl

Ein Zeiger auf die neue DACL für das -Objekt. Dieser Parameter wird ignoriert, es sei denn, der Wert des SecurityInfo-Parameters enthält das flag DACL_SECURITY_INFORMATION . Wenn der Wert des SecurityInfo-Parameters das flag DACL_SECURITY_INFORMATION enthält und der Wert dieses Parameters auf NULL festgelegt ist, wird allen Personen voller Zugriff auf das Objekt gewährt. Informationen zu NULL-DACLs finden Sie unter Erstellen einer DACL.

[in, optional] pSacl

Ein Zeiger auf die neue SACL für das -Objekt. Der SecurityInfo-Parameter muss eines der folgenden Flags enthalten: SACL_SECURITY_INFORMATION, LABEL_SECURITY_INFORMATION, ATTRIBUTE_SECURITY_INFORMATION, SCOPE_SECURITY_INFORMATION oder BACKUP_SECURITY_INFORMATION. Wenn Sie SACL_SECURITY_INFORMATION oder SCOPE_SECURITY_INFORMATION festlegen, muss das SE_SECURITY_NAME-Recht für den Aufrufer aktiviert sein. Dieser Parameter kann NULL sein, wenn Sie die SACL nicht festlegen.

Rückgabewert

Wenn die Funktion erfolgreich ist, gibt die Funktion ERROR_SUCCESS zurück.

Wenn die Funktion fehlschlägt, gibt sie einen nichtzero-Fehlercode zurück, der in WinError.h definiert ist.

Hinweise

Wenn Sie die diskretionäre Zugriffssteuerungsliste (Discretionary Access Control List , DACL) oder beliebige Elemente in der Systemzugriffssteuerungsliste (SACL) eines Objekts festlegen, werden alle vererbbaren Zugriffssteuerungseinträge (ACEs) gemäß den ACE-Vererbungsregeln automatisch an vorhandene untergeordnete Objekte weitergegeben.

Sie können die SetSecurityInfo-Funktion mit den folgenden Objekttypen verwenden:

  • Lokale oder Remotedateien oder Verzeichnisse auf einem NTFS
  • Named Pipes
  • Lokale oder Remotedrucker
  • Lokale oder Windows-Remotedienste
  • Netzwerkfreigaben
  • Registrierungsschlüssel
  • Semaphore, Ereignisse, Mutexes und wartebare Timer
  • Prozesse, Threads, Aufträge und Dateizuordnungsobjekte
  • Fensterstationen und Desktops
  • Verzeichnisdienstobjekte

Die SetSecurityInfo-Funktion ordnet zugriffsberechtigte oder zugriff verweigerte ACEs nicht basierend auf der bevorzugten Reihenfolge neu an. Beim Verteilen vererbbarer ACEs an vorhandene untergeordnete Objekte stellt SetSecurityInfo geerbte ACEs nach allen nicht inheritierten ACEs in den DACLs der untergeordneten Objekte in die Reihenfolge.

Hinweis Wenn der Freigabezugriff auf die untergeordneten Elemente des Objekts nicht verfügbar ist, werden mit dieser Funktion nicht geschützte ACEs nicht an die untergeordneten Elemente weitergegeben. Wenn beispielsweise ein Verzeichnis mit exklusivem Zugriff geöffnet wird, verteilt das Betriebssystem nicht geschützte ACEs nicht an die Unterverzeichnisse oder Dateien dieses Verzeichnisses, wenn die Sicherheit für das Verzeichnis geändert wird.
 
Warnung Wenn das angegebene Handle mit dem ACCESS_MASK Wert MAXIMUM_ALLOWED geöffnet wurde, werden acEs von der SetSecurityInfo-Funktion nicht an untergeordnete Elemente weitergegeben.
 

Anforderungen

Anforderung Wert
Unterstützte Mindestversion (Client) Windows XP [Desktop-Apps | UWP-Apps]
Unterstützte Mindestversion (Server) Windows Server 2003 [Desktop-Apps | UWP-Apps]
Zielplattform Windows
Kopfzeile aclapi.h
Bibliothek Advapi32.lib
DLL Advapi32.dll

Weitere Informationen

ACL

Zugriffssteuerung

Grundlegende Access Control-Funktionen

GetNamedSecurityInfo

GetSecurityInfo

SECURITY_DESCRIPTOR

SECURITY_INFORMATION

SE_OBJECT_TYPE

SID

SetNamedSecurityInfo