Die AccessCheck Funktion könnte übrigens ein falsches Ergebnis unter Windows Vista liefern. Es wird nicht das "Integrity Level" überprüft.
Es handelt sich dabei um einen Eintrag (ACE) in der SACL. Lesen kann man es über LABEL_SECURITY_INFORMATION.
Die Konstanten und die ACE SIDs sind so definiert.
Delphi-Quellcode:
{@Name includes the integrity ACE into the security descriptor string.
See [url]http://msdn2.microsoft.com/en-us/library/aa376397.aspx[/url]
}
LABEL_SECURITY_INFORMATION = $0000010;
//wenn man es mal braucht
SECURITY_MANDATORY_UNTRUSTED_RID = $0;
SECURITY_MANDATORY_LOW_RID = $1000;
SECURITY_MANDATORY_MEDIUM_RID = $2000;
SECURITY_MANDATORY_HIGH_RID = $3000;
SECURITY_MANDATORY_SYSTEM_RID = $4000;
SECURITY_MANDATORY_PROTECTED_PROCESS_RID = $5000;
LowIL = '
S-1-16-4096';
MediumIL = '
S-1-16-8192';
HighIL = '
S-1-16-12288';
SystemIL = '
S-1-16-16384';
ProtectedProcessIL = '
S-1-16-20480';