Deutsch
Stammtisch & Café

MapGenericMask.

 


Beschreibung:

MapGenericMask wandelt Generic-Rechte in einer Zugriffsmaske in deren standard und spezifischen Rechte um und entfernt nicht definierte Flags. MapGenericMask ist unter anderem beim Vergleichen von Zugriffsrechten eine sehr nützliche Funktion. Diese API gibt es nur unter NT-basierten Windowssystemen.




Deklaration:

Def @MapGenericMask(2) !advapi32,MapGenericMask




Parameter:

1.Parameter: 4 Byte Bereichsvariable oder Adresse einer LongInt-Variablen, die die umzusetzenden Zugriffsrechte enthält. Kehrt die Funktion zurück, stehen hier die umgewandelten Zugriffsrechte.
2.Parameter: GENERIC_MAPPING Struktur oder 16 Bytes große Bereichsvariable welche angibt, wie die Rechte umgesetzt werden sollen. Da die u.a. die spezifischen Rechte von der Art der Zugriffsmaske abhängen (z.B. Dateien, Registry...), hängen die hier einzusetzenden Werte davon ab, worauf sich der Zugriff bezieht.
- Byte 0-4 = Kombinationsflag aus standard und spezifische Rechten, die zusammen GENERIC_READ entsprechen. Was hier einzusetzen ist, hängt davon ab worauf sich die Zugriffsmaske bezieht (z.B. Dateien, Registry...). Bei Dateien wäre der Wert hier $120089.
- Byte 4-8 = Kombinationsflag aus standard und spezifische Rechten, die zusammen GENERIC_WRITE entsprechen. Was hier einzusetzen ist, hängt davon ab worauf sich die Zugriffsmaske bezieht (z.B. Dateien, Registry...). Bei Dateien wäre der Wert hier $120116.
- Byte 8-12 = Kombinationsflag aus standard und spezifische Rechten, die zusammen GENERIC_EXECUTE entsprechen. Was hier einzusetzen ist, hängt davon ab worauf sich die Zugriffsmaske bezieht (z.B. Dateien, Registry...). Bei Dateien wäre der Wert hier $1200A0.
- Byte 12-16 = Kombinationsflag aus standard und spezifische Rechten, die zusammen GENERIC_ALL entsprechen. Was hier einzusetzen ist, hängt davon ab worauf sich die Zugriffsmaske bezieht (z.B. Dateien, Registry...). Bei Dateien wäre der Wert hier $1F01FF.



Rückgabewert:

Die Funktion gibt keinen Wert zurück.


Beispiele:

KompilierenMarkierenSeparieren
Def @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("Mapping 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]
 
01.07.2005  
 



Antworten


Thementitel, max. 100 Zeichen.
 

Systemprofile:

Kein Systemprofil angelegt. [anlegen]

XProfan:

 Beitrag  Schrift  Smilies  ▼ 

Bitte anmelden um einen Beitrag zu verfassen.
 

Themenoptionen

1.465 Betrachtungen

Unbenanntvor 0 min.

Themeninformationen

Dieses Thema hat 1 Teilnehmer:

unbekannt (1x)


Admins  |  AGB  |  Anwendungen  |  Autoren  |  Chat  |  Datenschutz  |  Download  |  Eingangshalle  |  Hilfe  |  Händlerportal  |  Impressum  |  Mart  |  Schnittstellen  |  SDK  |  Services  |  Spiele  |  Suche  |  Support

Ein Projekt aller XProfaner, die es gibt!


Mein XProfan
Private Nachrichten
Eigenes Ablageforum
Themen-Merkliste
Eigene Beiträge
Eigene Themen
Zwischenablage
Abmelden
 Deutsch English Français Español Italia
Übersetzungen

Datenschutz


Wir verwenden Cookies nur als Session-Cookies wegen der technischen Notwendigkeit und bei uns gibt es keine Cookies von Drittanbietern.

Wenn du hier auf unsere Webseite klickst oder navigierst, stimmst du unserer Erfassung von Informationen in unseren Cookies auf XProfan.Net zu.

Weitere Informationen zu unseren Cookies und dazu, wie du die Kontrolle darüber behältst, findest du in unserer nachfolgenden Datenschutzerklärung.


einverstandenDatenschutzerklärung
Ich möchte keinen Cookie