| |
|
|
|
Beschreibung:
GetFileSecurity ermittelt Informationen über die Sicherheitseinstellungen einer Datei (Security Descriptor) von einer in NTFS partitionierten Festplatte. Diese Funktion gibt es nur unter NT-basierten Windowssystemen. Für den Zugriff auf die Sicherheitseinstellungen muß man auf die Datei oder den Ordner READ_CONTROL Zugriffsrechte haben oder der Eigentümer sein.
Deklaration:
DEF @GetFileSecurity(5) !ADVAPI32,GetFileSecurityA
Parameter:
1.Parameter: Adresse eines Strings oder Bereichsvariable mit einem String, der den Datei- oder Ordnernamen enthält, zu dem man die Sicherheitsinformationen benötigt. 2.Parameter: Flags, die angeben welche Informationen man benötigt. Verschieden Flags können mit | addiert werden. => - $1 = Ermittelt Informationen über den Eigentümer des Ordners oder der Datei (OWNER_SECURITY_INFORMATION). - $2 = Ermittelt die primäre Gruppe (GROUP_SECURITY_INFORMATION). - $4 = Ermittelt Informationen über Zugriffsberechtigungen (DACL) von anderen Usern(DACL_SECURITY_INFORMATION) - $8 = Ermittelt Informationen darüber, welche Zugriffe vom System aufgezeichnet (SACL) werden.(SACL_SECURITY_INFORMATION). Für diesen Zugriff wird ein aktives Privileg SeSecurityPrivilege benötigt (Token). 3.Parameter: Ausreichend dimensionierte Bereichsvariable, die eine SECURITY_DESCRIPTOR Struktur aufnimmt, die die angefragten Infos enthält. Die Inhalte dieser Struktur sollten nicht direkt ausgelesen werden - dafür gibt es weitere APIs. 4.Parameter: Die Größe der Bereichsvariablen aus Parameter 3 in Bytes als LongInt. 5.Parameter: 4 Byte große Bereichsvariable, die die benötigte Größe von Parameter 3 aufnimmt.
Rückgabewert:
1 bei Erfolg, 0 bei Fehler.
Beispiele:
KompilierenMarkierenSeparierenDEF @IsValidSecurityDescriptor(1) !"ADVAPI32","IsValidSecurityDescriptor"
DEF @GetFileSecurity(5) !"ADVAPI32","GetFileSecurityA"
DEF @GetLastError(0) !"KERNEL32","GetLastError"
DEF @SetLastError(1) !"KERNEL32","SetLastError"
Declare NEEDED#,SIDa#,Fehler&,NEEDED&,PSECURITY_DESCRIPTOR#
Declare FILENAME$
DIM Needed#,4
LET FILENAME$=@CHOOSEDIR$("Ordner wählen")
ADDSTRING "Security Descriptor von "+FILENAME$
Clear Needed#
LET Fehler&=@GetFileSecurity(@ADDR(Filename$),$1 | $2 | $4,0,0,Needed#)
ADDSTRING "Rückgabe von GetFileSecurity="+@STR$(Fehler&)
ADDSTRING "Letzter API-Fehler="+@STR$(@GetLastError())
LET NEEDED&=@LONG(Needed#,0)
ADDSTRING "Erforderliche Länge des Security Descriptor="+@STR$(Needed&)
CASE NEEDED&=0 : LET NEEDED&=1024
DIM PSECURITY_DESCRIPTOR#,Needed&
Clear PSECURITY_DESCRIPTOR#
@SetLastError(0)
LET Fehler&=@GetFileSecurity(@ADDR(Filename$),$1 | $2 | $4,PSECURITY_DESCRIPTOR#,NEEDED&,Needed#)
ADDSTRING "Rückgabe von GetFileSecurity="+@STR$(Fehler&)
ADDSTRING "Letzter API-Fehler="+@STR$(@GetLastError())
LET Fehler&=@IsValidSecurityDescriptor(PSECURITY_DESCRIPTOR#)
ADDSTRING "Rückgabe von IsValidSecurityDescriptor="+@STR$(Fehler&)
ADDSTRING "Letzter API-Fehler="+@STR$(@GetLastError())
Dispose NEEDED#
Dispose PSECURITY_DESCRIPTOR#
@EDITBOX("Rückgaben",1)
[keywords:9143fea2ea] Security Descriptor File Datei Verzeichnis Ordner Zugriff Zugriffe erlauben verbieten auslesen ermitteln verhindern [/keywords:9143fea2ea] |
|
|
| |
|
|