Fonction RtlNormalizeSecurityDescriptor (ntddk.h)
Cette routine examine un descripteur de sécurité pour trouver des moyens de modifier sa disposition, dans le but que deux descripteurs de sécurité équivalents puissent être instance unique dans $SDS aussi souvent que possible, et un objectif secondaire que le descripteur de sécurité stocké doit être aussi petit que possible.
Syntaxe
NTSYSAPI BOOLEAN RtlNormalizeSecurityDescriptor(
PSECURITY_DESCRIPTOR *SecurityDescriptor,
ULONG SecurityDescriptorLength,
PSECURITY_DESCRIPTOR *NewSecurityDescriptor,
PULONG NewSecurityDescriptorLength,
BOOLEAN CheckOnly
);
Paramètres
SecurityDescriptor
Pointeur vers un pointeur vers le SECURITY_DESCRIPTOR à normaliser. Le descripteur de sécurité doit être au format auto-relatif. Si NewSecurityDescriptor n’est pas fourni, cet emplacement peut être mis à jour avec un descripteur de sécurité nouvellement alloué à partir d’un pool paginé (libérant le descripteur de sécurité d’origine) si des modifications ont été apportées.
SecurityDescriptorLength
Longueur en octets du descripteur de sécurité à normaliser.
NewSecurityDescriptor
S’il est présent et pointe vers NULL, reçoit un pointeur vers un descripteur de sécurité nouvellement alloué à partir d’un pool paginé si des modifications ont été apportées, au lieu de mettre à jour SecurityDescriptor.
S’il est présent et pointe vers non NULL, un descripteur de sécurité modifié est construit directement dans la mémoire tampon (supposée être au moins de longueur SecurityDescriptorLength) fournie par l’appelant.
NewSecurityDescriptorLength
Reçoit éventuellement la longueur en octets du descripteur de sécurité modifié si cette routine apporte des modifications.
CheckOnly
Valeur BOOLEAN qui, si TRUE spécifie que la routine ne doit prendre aucune action lorsque des modifications seraient effectuées. Dans ce cas, aucun descripteur de sécurité modifié n’est créé.
Valeur retournée
Retourne TRUE si des modifications ont été apportées ou auraient été apportées et FALSE dans le cas contraire (y compris l’échec).
Remarques
Si cette routine apporte des modifications, elle retourne le descripteur de sécurité modifié, sauf si l’appelant spécifie CheckOnly indiquant qu’il souhaite uniquement savoir si des modifications sont apportées.
Les transformations actuellement prises en charge sont les suivantes :
Organisez les sections dans l’ordre Sacl => Dacl => Owner => Group.
Éliminez les remplissages inutiles (au-delà du simple alignement) entre les sections.
Zéro les octets d’alignement entre les sections.
Éliminez les sacl qui ne contiennent pas d’AE.
Éliminez les AIC ALLOW en double dans sacl et dacl.
Configuration requise
Condition requise | Valeur |
---|---|
Client minimal pris en charge | Windows 10, version 2004 |
En-tête | ntddk.h (incluez Ntddk.h) |
IRQL | APC_LEVEL |