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
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 |