SetNamedSecurityInfoA-Funktion (aclapi.h)

Die SetNamedSecurityInfo-Funktion legt die angegebenen Sicherheitsinformationen im Sicherheitsdeskriptor eines angegebenen Objekts fest. Der Aufrufer identifiziert das Objekt anhand des Namens.

Syntax

DWORD SetNamedSecurityInfoA(
  [in]           LPSTR                pObjectName,
  [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] pObjectName

Ein Zeiger auf eine NULL-endende Zeichenfolge, die den Namen des Objekts angibt, für das Sicherheitsinformationen festgelegt werden sollen. Dies kann der Name einer lokalen oder Remotedatei oder eines Remoteverzeichnisses auf einem NTFS-Dateisystem, einer Netzwerkfreigabe, einem Registrierungsschlüssel, einem Semaphor, einem Ereignis, einem Mutex, einer Dateizuordnung oder einem wartebaren Timer sein.

Beschreibungen der Zeichenfolgenformate für die verschiedenen Objekttypen finden Sie unter SE_OBJECT_TYPE.

[in] ObjectType

Ein Wert der SE_OBJECT_TYPE-Enumeration , der den Typ des Objekts angibt, das durch den pObjectName-Parameter benannt wird.

[in] SecurityInfo

Ein Satz 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-Struktur , die den Besitzer des Objekts identifiziert. Wenn der Aufrufer nicht über die SeRestorePrivilege-Konstante verfügt (siehe Berechtigungskonstanten), muss diese SID im Token des Aufrufers enthalten sein und die Berechtigung SE_GROUP_OWNER aktiviert sein. Der SecurityInfo-Parameter muss das flag OWNER_SECURITY_INFORMATION enthalten. Um den Besitzer festzulegen, muss der Aufrufer über WRITE_OWNER Zugriff auf das Objekt verfügen oder die berechtigung SE_TAKE_OWNERSHIP_NAME aktiviert haben. Wenn Sie die Besitzer-SID nicht festlegen, kann dieser Parameter NULL sein.

[in, optional] psidGroup

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

[in, optional] pDacl

Ein Zeiger auf die neue DACL für das -Objekt. Der SecurityInfo-Parameter muss das flag DACL_SECURITY_INFORMATION enthalten. Der Aufrufer muss WRITE_DAC Zugriff auf das Objekt haben oder der Besitzer des Objekts sein. Wenn Sie die DACL nicht festlegen, kann dieser Parameter NULL sein.

[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 der Aufrufer die berechtigung SE_SECURITY_NAME aktiviert haben. Wenn Sie die SACL nicht festlegen, kann dieser Parameter NULL sein.

Rückgabewert

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

Wenn die Funktion fehlschlägt, gibt sie einen in WinError.h definierten Fehlercode ungleich null zurück.

Hinweise

Wenn Sie die daCL (Discretionary Access Control List ) oder elemente in der Systemzugriffssteuerungsliste (SACL) eines Objekts festlegen, gibt das System alle vererbbaren Zugriffssteuerungseinträge (Access Control Entries , ACEs) gemäß den Vererbungsregeln automatisch an vorhandene untergeordnete Objekte weiter.

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

  • Lokale oder Remotedateien oder Verzeichnisse auf einem NTFS
  • Lokale oder Remotedrucker
  • Lokale oder Remote-Windows-Dienste
  • Netzwerkfreigaben
  • Registrierungsschlüssel
  • Semaphore, Ereignisse, Mutexe und wartebare Timer
  • Dateizuordnungsobjekte
  • Verzeichnisdienstobjekte
Die SetNamedSecurityInfo-Funktion ordnet Zugriffsberechtigungs- oder Zugriffsverweigerungs-ACEs nicht basierend auf der bevorzugten Reihenfolge neu an. Bei der Weitergabe vererbbarer ACEs an vorhandene untergeordnete Objekte setzt SetNamedSecurityInfo geerbte ACEs nach allen nicht inheritierten ACEs in den DACLs der untergeordneten Objekte in die Reihenfolge.

Diese Funktion überträgt Informationen im Klartext. Die von dieser Funktion übertragenen Informationen werden signiert, es sei denn, die Signatur wurde für das System deaktiviert, aber es wird keine Verschlüsselung durchgeführt.

Wenn Sie die Zugriffsrechte für einen Ordner aktualisieren, der durch einen UNC-Pfad angegeben wird, z. B. \Test\TestFolder, wird der ursprüngliche geerbte ACE entfernt, und der vollständige Volumepfad ist nicht enthalten.

Beispiele

Ein Beispiel, das diese Funktion verwendet, finden Sie unter Ändern der ACLs eines Objekts oder Übernehmen des Objektbesitzes.

Hinweis

Der aclapi.h-Header definiert SetNamedSecurityInfo 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 [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

SetSecurityInfo