|
Descripción:
MapGenericMask wandelt Generic-Rechte en uno Zugriffsmaske en deren standard y spezifischen Rechte en y lejos no definierte Flags. MapGenericMask es bajo anderem beim Vergleichen de Zugriffsrechten una muy nützliche Función. Diese API hay sólo bajo NT-basierten Windowssystemen.
Deklaration:
Def @MapGenericMask(2) !advapi32,MapGenericMask
Parámetro:
1.Parámetro: 4 Byte Bereichsvariable oder Adresse uno LongInt-Variables, el el umzusetzenden Zugriffsrechte enthält. Kehrt el Función zurück, posición hier el umgewandelten Zugriffsrechte. 2.Parámetro: GENERIC_MAPPING Struktur oder 16 Bytes große Bereichsvariable welche angibt, como Rechte umgesetzt voluntad debería. Como el u.a. el spezifischen Rechte de el Art el Zugriffsmaske abhängen (z.B. Archivos, Registry...), hängen el hier einzusetzenden Werte su de, worauf se el Zugriff bezieht. - Byte 0-4 = Kombinationsflag de standard y spezifische Rechten, el zusammen GENERIC_READ entsprechen. Was hier einzusetzen es, hängt su de worauf el Zugriffsmaske bezieht (z.B. Archivos, Registry...). En Archivos wäre el Valor hier $120089. - Byte 4-8 = Kombinationsflag de standard y spezifische Rechten, el zusammen GENERIC_WRITE entsprechen. Was hier einzusetzen es, hängt su de worauf el Zugriffsmaske bezieht (z.B. Archivos, Registry...). En Archivos wäre el Valor hier $120116. - Byte 8-12 = Kombinationsflag de standard y spezifische Rechten, el zusammen GENERIC_EXECUTE entsprechen. Was hier einzusetzen es, hängt su de worauf el Zugriffsmaske bezieht (z.B. Archivos, Registry...). En Archivos wäre el Valor hier $1200A0. - Byte 12-16 = Kombinationsflag de standard y spezifische Rechten, el zusammen GENERIC_ALL entsprechen. Was hier einzusetzen es, hängt su de worauf el Zugriffsmaske bezieht (z.B. Archivos, Registry...). En Archivos wäre el Valor hier $1F01FF.
Rückgabewert:
El Función son no Valor zurück.
Beispiele:
KompilierenMarcaSeparaciónDef @MapGenericMask(2) !"advapi32","MapGenericMask"
Windowstyle 31
Windowtitle "Generic Mapping"
Window 0,0-640,440
Declare GEN_ACCESS&,READ&,WRITE&,EXECUTE&,OK&,ALL&,MAPPED_ACCESS#
Let Read&=@CreateCheckBox(%HWND,"GENERIC_READ",10,20,200,30)
Let Write&=@CreateCheckBox(%HWND,"GENERIC_WRITE",10,100,200,30)
Let EXECUTE&=@CreateCheckBox(%HWND,"GENERIC_EXECUTE",10,180,200,30)
Let ALL&=@CreateCheckBox(%HWND,"GENERIC_ALL",10,260,200,30)
LET OK&=@CreateButton(%HWND,"Mappen!",10,350,200,30)
While 0=0
Waitinput
IF @Getfocus(OK&)
LET GEN_ACCESS&=0
IF @Getcheck(READ&)
LET GEN_ACCESS&=@or(GEN_ACCESS&,$80000000)
endif
IF @Getcheck(WRITE&)
LET GEN_ACCESS&=@or(GEN_ACCESS&,$40000000)
endif
IF @Getcheck(EXECUTE&)
LET GEN_ACCESS&=@or(GEN_ACCESS&,$20000000)
endif
IF @Getcheck(ALL&)
LET GEN_ACCESS&=@or(GEN_ACCESS&,$10000000)
endif
ADDSTRING "*** Zugriffsrechte vor Mapping ***"
ADDSTRING "Accessmaske=$"+@HEX$(GEN_ACCESS&)
IF @or(GEN_ACCESS&,$1F01FF)=GEN_ACCESS&
ADDSTRING "Enthaltenes Recht=FILE_ALL_ACCESS (Vollzugriff)"
endif
IF @or(GEN_ACCESS&,$1)=GEN_ACCESS&
ADDSTRING "Enthaltenes Recht=FILE_READ_DATA (Erlaubt Daten aus einem File zu lesen)"
endif
IF @or(GEN_ACCESS&,$2)=GEN_ACCESS&
ADDSTRING "Enthaltenes Recht=FILE_WRITE_DATA (Erlaubt Daten zu Scheiben)"
endif
IF @or(GEN_ACCESS&,$4)=GEN_ACCESS&
ADDSTRING "Enthaltenes Recht=FILE_APPEND_DATA (Erlaubt Daten anzuhängen)"
endif
IF @or(GEN_ACCESS&,$8)=GEN_ACCESS&
ADDSTRING "Enthaltenes Recht=FILE_READ_EA (Erlaubt erweiterte Attibute zu lesen)"
endif
IF @or(GEN_ACCESS&,$10)=GEN_ACCESS&
ADDSTRING "Enthaltenes Recht=FILE_WRITE_EA (Erlaubt erweiterte Attribute zu schreiben)"
endif
IF @or(GEN_ACCESS&,$20)=GEN_ACCESS&
ADDSTRING "Enthaltenes Recht=FILE_EXECUTE (Erlaubt eine Datei auszuführen)"
endif
IF @or(GEN_ACCESS&,$80)=GEN_ACCESS&
ADDSTRING "Enthaltenes Recht=FILE_READ_ATTRIBUTES (Lesen der Fileattribute)"
endif
IF @or(GEN_ACCESS&,$100)=GEN_ACCESS&
ADDSTRING "Enthaltenes Recht=FILE_WRITE_ATTRIBUTES (Ändern der Fileattribute)"
endif
IF @or(GEN_ACCESS&,$00040000)=GEN_ACCESS&
ADDSTRING "Enthaltenes Recht=WRITE_DAC (Ändern der DACL Einträge)"
endif
IF @or(GEN_ACCESS&,$00020000)=GEN_ACCESS&
ADDSTRING "Enthaltenes Recht=READ_CONTROL (Lesen der DACL Einträge und Besitzer)"
endif
IF @or(GEN_ACCESS&,$00100000)=GEN_ACCESS&
ADDSTRING "Enthaltenes Recht=SYNCHRONIZE (Erlaubt einem FileHandle auf ein Complitition I/O zu warten)"
endif
IF @or(GEN_ACCESS&,$40)=GEN_ACCESS&
ADDSTRING "Enthaltenes Recht=File_Delete _Child (Erlaubt einen Unterordner zu löschen - für Dateien keine Bedeutung)"
endif
IF @or(GEN_ACCESS&,$01000000)=GEN_ACCESS&
ADDSTRING "Enthaltenes Recht=ACCESS_SYSTEM_SECURITY (Zugriff auf den SACL)"
endif
IF @or(GEN_ACCESS&,$10000000)=GEN_ACCESS&
ADDSTRING "Enthaltenes Recht=GENERIC_ALL"
endif
IF @or(GEN_ACCESS&,$20000000)=GEN_ACCESS&
ADDSTRING "Enthaltenes Recht=GENERIC_EXECUTE"
endif
IF @or(GEN_ACCESS&,$40000000)=GEN_ACCESS&
ADDSTRING "Enthaltenes Recht=GENERIC_WRITE"
endif
IF @or(GEN_ACCESS&,$80000000)=GEN_ACCESS&
ADDSTRING "Enthaltenes Recht=GENERIC_READ"
endif
IF @or(GEN_ACCESS&,$80000)=GEN_ACCESS&
ADDSTRING "Enthaltenes Recht=WRITE_OWNER (Eigentümer ändern)"
endif
IF @or(GEN_ACCESS&,$10000)=GEN_ACCESS&
ADDSTRING "Enthaltenes Recht=_DELETE (Datei löschen)"
endif
DIM MAPPED_ACCESS#,16
Long MAPPED_ACCESS#,0=$20000 | $1 | $8 | $80 | $100000
Long MAPPED_ACCESS#,4=$20000 | $2 | $10 | $100 | $100000 | $4
Long MAPPED_ACCESS#,8=$20000 | $20 | $80 | $100000
Long MAPPED_ACCESS#,12=$F0000 | $1FF | $100000
@MapGenericMask(@ADDR(GEN_ACCESS&),MAPPED_ACCESS#)
Dispose MAPPED_ACCESS#
ADDSTRING ""
ADDSTRING "*** Zugriffsrechte nach Mapping ***"
ADDSTRING "Accessmaske=$"+@HEX$(GEN_ACCESS&)
IF @or(GEN_ACCESS&,$80000000)=GEN_ACCESS&
ADDSTRING "Enthaltenes Recht=GENERIC_READ"
LET GEN_ACCESS&=GEN_ACCESS&-$80000000
endif
IF @or(GEN_ACCESS&,$1)=GEN_ACCESS&
ADDSTRING "Enthaltenes Recht=FILE_READ_DATA (Erlaubt Daten aus einem File zu lesen)"
LET GEN_ACCESS&=GEN_ACCESS&-$1
endif
IF @or(GEN_ACCESS&,$2)=GEN_ACCESS&
ADDSTRING "Enthaltenes Recht=FILE_WRITE_DATA (Erlaubt Daten zu Scheiben)"
LET GEN_ACCESS&=GEN_ACCESS&-$2
endif
IF @or(GEN_ACCESS&,$4)=GEN_ACCESS&
ADDSTRING "Enthaltenes Recht=FILE_APPEND_DATA (Erlaubt Daten anzuhängen)"
LET GEN_ACCESS&=GEN_ACCESS&-$4
endif
IF @or(GEN_ACCESS&,$8)=GEN_ACCESS&
ADDSTRING "Enthaltenes Recht=FILE_READ_EA (Erlaubt erweiterte Attibute zu lesen)"
LET GEN_ACCESS&=GEN_ACCESS&-$8
endif
IF @or(GEN_ACCESS&,$10)=GEN_ACCESS&
ADDSTRING "Enthaltenes Recht=FILE_WRITE_EA (Erlaubt erweiterte Attribute zu schreiben)"
LET GEN_ACCESS&=GEN_ACCESS&-$10
endif
IF @or(GEN_ACCESS&,$20)=GEN_ACCESS&
ADDSTRING "Enthaltenes Recht=FILE_EXECUTE (Erlaubt eine Datei auszuführen)"
LET GEN_ACCESS&=GEN_ACCESS&-$20
endif
IF @or(GEN_ACCESS&,$80)=GEN_ACCESS&
ADDSTRING "Enthaltenes Recht=FILE_READ_ATTRIBUTES (Lesen der Fileattribute)"
LET GEN_ACCESS&=GEN_ACCESS&-$80
endif
IF @or(GEN_ACCESS&,$100)=GEN_ACCESS&
ADDSTRING "Enthaltenes Recht=FILE_WRITE_ATTRIBUTES (Ändern der Fileattribute)"
LET GEN_ACCESS&=GEN_ACCESS&-$100
endif
IF @or(GEN_ACCESS&,$40000)=GEN_ACCESS&
ADDSTRING "Enthaltenes Recht=WRITE_DAC (Ändern der DACL Einträge)"
LET GEN_ACCESS&=GEN_ACCESS&-$40000
endif
IF @or(GEN_ACCESS&,$20000)=GEN_ACCESS&
ADDSTRING "Enthaltenes Recht=READ_CONTROL (Lesen der DACL Einträge und Besitzer)"
LET GEN_ACCESS&=GEN_ACCESS&-$20000
endif
IF @or(GEN_ACCESS&,$100000)=GEN_ACCESS&
ADDSTRING "Enthaltenes Recht=SYNCHRONIZE (Erlaubt einem FileHandle auf ein Complitition I/O zu warten)"
LET GEN_ACCESS&=GEN_ACCESS&-$100000
endif
IF @or(GEN_ACCESS&,$40)=GEN_ACCESS&
ADDSTRING "Enthaltenes Recht=File_Delete _Child (Erlaubt einen Unterordner zu löschen - für Dateien keine Bedeutung)"
LET GEN_ACCESS&=GEN_ACCESS&-$40
endif
IF @or(GEN_ACCESS&,$1000000)=GEN_ACCESS&
ADDSTRING "Enthaltenes Recht=ACCESS_SYSTEM_SECURITY (Zugriff auf den SACL)"
LET GEN_ACCESS&=GEN_ACCESS&-$1000000
endif
IF @or(GEN_ACCESS&,$10000000)=GEN_ACCESS&
ADDSTRING "Enthaltenes Recht=GENERIC_ALL"
LET GEN_ACCESS&=GEN_ACCESS&-$10000000
endif
IF @or(GEN_ACCESS&,$20000000)=GEN_ACCESS&
ADDSTRING "Enthaltenes Recht=GENERIC_EXECUTE"
LET GEN_ACCESS&=GEN_ACCESS&-$20000000
endif
IF @or(GEN_ACCESS&,$40000000)=GEN_ACCESS&
ADDSTRING "Enthaltenes Recht=GENERIC_WRITE"
LET GEN_ACCESS&=GEN_ACCESS&-$40000000
endif
IF @or(GEN_ACCESS&,$80000)=GEN_ACCESS&
ADDSTRING "Enthaltenes Recht=WRITE_OWNER (Eigentümer ändern)"
LET GEN_ACCESS&=GEN_ACCESS&-$80000
endif
IF @or(GEN_ACCESS&,$10000)=GEN_ACCESS&
ADDSTRING "Enthaltenes Recht=_DELETE (Datei löschen)"
LET GEN_ACCESS&=GEN_ACCESS&-$10000
endif
ADDSTRING ""
ADDSTRING "*** Kontrolle ***"
ADDSTRING "Überschuß bei File-Access=$"+@HEX$(GEN_ACCESS&)
@EDITBOX(&quo ing Rückgaben", 1)
Clearlist
endif
wend
[keywords:e9426c3e21] Umsetzen Rechte Zugrif Zugriffe Mapping GENERIC GENERIC_READ GENERIC_WRITE GENERIC_EXECUTE GENERIC_ALL map mapping Access Maske mask [/keywords:e9426c3e21] |
|