Deutsch
Quelltexte/ Codesnippets

Listen Privilegien Prozedur Prozedursammlung

 
Hallo Michael...

Die kannst du auch noch mit einbauen:
Globale_Defs.INC
KompilierenMarkierenSeparieren
Declare GU_BUFFER_P#,GU_BUFFER_A#,GU_BUFFER#,Entry_COUNT#
Declare GETERROR_Buffer#
Declare UNICODE#,Attribut#,PrivilegSET#,PRIVILEG#
Declare SID#,DOMAIN#,ALLPRIVS#,ComparePriv#
Struct LSA_UNICODE_STRING=Length%,MaximumLength%,Buffer&
Struct LSA_OBJECT_ATTRIBUTES=Length&,RootDirectory&,Length%,MaximumLength%,Buffer&,Attributes&,SecurityDescriptor#(4),SecurityQualityOfService#(4)

Prozedur mit DEMO
KompilierenMarkierenSeparieren
************** Start der Prozedur zum Listen der Privilegien von Usern und Gruppen ********************

PROC Rechte_Listen

    Clearlist
    Parameters ACCOUNT$
    Declare Fehler&,Policy_Handle&,Gesammtlänge&
    Declare SID_TYPE_INDICATOR&,COUNT&,DOMAINNAME_SIZE&
    Declare SYSTEM$,DOMAIN$,SID_Size&,GETERROR_Buffer$
    Declare PrivPointer&,Zähler%,Länge%,Zeiger&
    DIM UNICODE#,LSA_UNICODE_STRING
    DIM Attribut#,LSA_OBJECT_ATTRIBUTES
    DIM ALLPRIVS#,2000
    DIM DOMAIN#,256
    DIM SID#,1
    DIM PRIVILEG#,100
    DIM PrivilegSET#,100
    DIM ComparePriv#,100
    Clear Attribut#,UNICODE#
    CLEAR SID#,DOMAIN#,SID_TYPE_INDICATOR&,Attribut#,ALLPRIVS#,OUNT&,DOMAINNAME_SIZE&
    LET SID_Size&=1
    LET DOMAINNAME_SIZE&=255
    LET SYSTEM$=""
    LET Fehler&=@External("advapi32.dll","LookupAccountNameA",@ADDR(System$),@addr(ACCOUNT$),SID#,@ADDR(SID_Size&),DOMAIN#,@ADDR(DOMAINNAME_SIZE&),@ADDR(SID_TYPE_INDICATOR&))
    Dispose SID#
    DIM SID#,SID_Size&
    CLEAR SID#,DOMAIN#,SID_TYPE_INDICATOR&,SYSTEM$
    LET DOMAINNAME_SIZE&=255
    LET Fehler&=@External("advapi32.dll","LookupAccountNameA",@ADDR(System$),@addr(ACCOUNT$),SID#,@ADDR(SID_Size&),DOMAIN#,@ADDR(DOMAINNAME_SIZE&),@ADDR(SID_TYPE_INDICATOR&))

    IF Fehler&<>1

        LET FEHLER&=@External("KERNEL32.DLL","GetLastError")
        DIM GETERROR_Buffer#,32000
        @External("KERNEL32","FormatMessageA",$1000,0,Fehler&,0,GETERROR_Buffer#,32000,0)
        Let GETERROR_Buffer$=@STRING$(GETERROR_Buffer#,0)
        Dispose GETERROR_Buffer#
        @messagebox(GETERROR_Buffer$,"Ein Fehler ist aufgetreten!",16)

    endif

    If Fehler&=1

        LET Fehler&=@External("advapi32.DLL","LsaOpenPolicy",0,Attribut#,$10 | $0800,@ADDR(POLICY_Handle&))
        Let Fehler&=@External("advapi32.DLL","LsaNtStatusToWinError",Fehler&)

        IF Fehler&<>0

            LET FEHLER&=@External("KERNEL32.DLL","GetLastError")
            DIM GETERROR_Buffer#,32000
            @External("KERNEL32","FormatMessageA",$1000,0,Fehler&,0,GETERROR_Buffer#,32000,0)
            Let GETERROR_Buffer$=@STRING$(GETERROR_Buffer#,0)
            Dispose GETERROR_Buffer#
            @messagebox(GETERROR_Buffer$,"Ein Fehler ist aufgetreten!",16)

        endif

        IF Fehler&=0

            Clear PrivPointer&,ALLPRIVS#
            LET Fehler&=@External("advapi32.dll","LsaEnumerateAccountRights",Policy_Handle&,SID#,@ADDR(PrivPointer&),@ADDR(Count&))
            Let Fehler&=@External("advapi32.DLL","LsaNtStatusToWinError",Fehler&)

            IF @and(Fehler&<>0,Fehler&<>2)

                LET FEHLER&=@External("KERNEL32.DLL","GetLastError")
                DIM GETERROR_Buffer#,32000
                @External("KERNEL32","FormatMessageA",$1000,0,Fehler&,0,GETERROR_Buffer#,32000,0)
                Let GETERROR_Buffer$=@STRING$(GETERROR_Buffer#,0)
                Dispose GETERROR_Buffer#
                @messagebox(GETERROR_Buffer$,"Ein Fehler ist aufgetreten!",16)

            endif

            LET Gesammtlänge&=@External("kernel32.dll","LocalSize",PrivPointer&)
            Case FEHLER&=0 : @External("kernel32.dll","RtlMoveMemory",ALLPRIVS#,PrivPointer&,Gesammtlänge&)

            WHILENOT Zähler%=COUNT&

                Clear PrivilegSet#
                Clear ComparePriv#
                Let Länge%=@Word(ALLPRIVS#,8*Zähler%)
                LET Zeiger&=@Long(ALLPRIVS#,8*Zähler%+4)
                @External("kernel32.dll","RtlMoveMemory",ComparePriv#,Zeiger&,Länge%)
                Let Fehler&=@External("kernel32.dll","WideCharToMultiByte",0,0,ComparePriv#,@INT(LÄnge%/2),PrivilegSet#,100,0,0)
                Addstring @String$(PrivilegSet#,0)
                inc Zähler%

            Wend

            LET FEHLER&=@External("advapi32.dll","LsaFreeMemory",PrivPointer&)
            LET Fehler&=@External("advapi32.DLL","LsaClose",Policy_Handle&)
            Let Fehler&=@External("advapi32.DLL","LsaNtStatusToWinError",Fehler&)

            IF Fehler&<>0

                LET FEHLER&=@External("KERNEL32.DLL","GetLastError")
                DIM GETERROR_Buffer#,32000
                @External("KERNEL32","FormatMessageA",$1000,0,Fehler&,0,GETERROR_Buffer#,32000,0)
                Let GETERROR_Buffer$=@STRING$(GETERROR_Buffer#,0)
                Dispose GETERROR_Buffer#
                @messagebox(GETERROR_Buffer$,"Ein Fehler ist aufgetreten!",16)

            endif

            @EDITBOX("Gefundene Privilegien...",1)

        Endif

    endif

    Dispose ALLPRIVS#
    Dispose DOMAIN#
    Dispose SID#
    Dispose PRIVILEG#
    Dispose PrivilegSET#
    Dispose ComparePriv#

endproc

************** Ende der Prozedur zum Listen der Privilegien von Usern und Gruppen ********************
Windowstyle 31
Windowtitle "Privilegien und Accountrechte listen"
Window 0,0-640,440
 $I GLOBALE_DEFS.INC
Rechte_Listen @input$("Gruppen- oder Usernamen eingeben (kein Alias):","Account","Administratoren")

While 0=0

    Waitinput

Wend


Privilegien enden auf -Privilege und Accountrechte auf -Right.
 
18.08.2005  
 




KompilierenMarkierenSeparieren
************** Privilegien_listen.INC **************
************** Start der Prozedur zum Listen der Privilegien von Usern und Gruppen ********************

Proc Rechte_listen

    Clearlist
    Parameters Account$
    Declare Fehler&,Policy_handle&,Gesammtlänge&
    Declare Sid_type_indicator&,Count&,Domainname_size&
    Declare System$,Domain$,Sid_size&,Geterror_buffer$
    Declare Privpointer&,Zähler%,Länge%,Zeiger&
    Dim Unicode#,Lsa_unicode_string
    Dim Attribut#,Lsa_object_attributes
    Dim Allprivs#,2000
    Dim Domain#,256
    Dim Sid#,1
    Dim Privileg#,100
    Dim Privilegset#,100
    Dim Comparepriv#,100
    Clear Attribut#,Unicode#
    Clear Sid#,Domain#,Sid_type_indicator&,Attribut#,Allprivs#,Count&,Domainname_size&
    Let Sid_size&=1
    Let Domainname_size&=255
    Let System$=""
    Let Fehler&=@External("advapi32.dll","LookupAccountNameA",@Addr(System$),@Addr(Account$),Sid#,@Addr(Sid_size&),Domain#,@Addr(Domainname_size&),@Addr(Sid_type_indicator&))
    Dispose Sid#
    Dim Sid#,Sid_size&
    Clear Sid#,Domain#,Sid_type_indicator&,System$
    Let Domainname_size&=255
    Let Fehler&=@External("advapi32.dll","LookupAccountNameA",@Addr(System$),@Addr(Account$),Sid#,@Addr(Sid_size&),Domain#,@Addr(Domainname_size&),@Addr(Sid_type_indicator&))

    If Fehler&<>1

        Let Fehler&=@External("KERNEL32.DLL","GetLastError")
        Dim Geterror_buffer#,32000
        @External("KERNEL32","FormatMessageA",$1000,0,Fehler&,0,Geterror_buffer#,32000,0)
        Let Geterror_buffer$=@String$(Geterror_buffer#,0)
        Dispose Geterror_buffer#
        @Messagebox(Geterror_buffer$,"Ein Fehler ist aufgetreten!",16)

    Endif

    If Fehler&=1

        Let Fehler&=@External("advapi32.DLL","LsaOpenPolicy",0,Attribut#,$10 | $0800,@Addr(Policy_handle&))
        Let Fehler&=@External("advapi32.DLL","LsaNtStatusToWinError",Fehler&)

        If Fehler&<>0

            Let Fehler&=@External("KERNEL32.DLL","GetLastError")
            Dim Geterror_buffer#,32000
            @External("KERNEL32","FormatMessageA",$1000,0,Fehler&,0,Geterror_buffer#,32000,0)
            Let Geterror_buffer$=@String$(Geterror_buffer#,0)
            Dispose Geterror_buffer#
            @Messagebox(Geterror_buffer$,"Ein Fehler ist aufgetreten!",16)

        Endif

        If Fehler&=0

            Clear Privpointer&,Allprivs#
            Let Fehler&=@External("advapi32.dll","LsaEnumerateAccountRights",Policy_handle&,Sid#,@Addr(Privpointer&),@Addr(Count&))
            Let Fehler&=@External("advapi32.DLL","LsaNtStatusToWinError",Fehler&)

            If @And(Fehler&<>0,Fehler&<>2)

                Let Fehler&=@External("KERNEL32.DLL","GetLastError")
                Dim Geterror_buffer#,32000
                @External("KERNEL32","FormatMessageA",$1000,0,Fehler&,0,Geterror_buffer#,32000,0)
                Let Geterror_buffer$=@String$(Geterror_buffer#,0)
                Dispose Geterror_buffer#
                @Messagebox(Geterror_buffer$,"Ein Fehler ist aufgetreten!",16)

            Endif

            Let Gesammtlänge&=@External("kernel32.dll","LocalSize",Privpointer&)
            Case Fehler&=0 : @External("kernel32.dll","RtlMoveMemory",Allprivs#,Privpointer&,Gesammtlänge&)

            Whilenot Zähler%=Count&

                Clear Privilegset#
                Clear Comparepriv#
                Let Länge%=@Word(Allprivs#,8*Zähler%)
                Let Zeiger&=@Long(Allprivs#,8*Zähler%+4)
                @External("kernel32.dll","RtlMoveMemory",Comparepriv#,Zeiger&,Länge%)
                Let Fehler&=@External("kernel32.dll","WideCharToMultiByte",0,0,Comparepriv#,@Int(LÄnge%/2),Privilegset#,100,0,0)
                Addstring @String$(Privilegset#,0)
                Inc Zähler%

            Wend

            Let Fehler&=@External("advapi32.dll","LsaFreeMemory",Privpointer&)
            Let Fehler&=@External("advapi32.DLL","LsaClose",Policy_handle&)
            Let Fehler&=@External("advapi32.DLL","LsaNtStatusToWinError",Fehler&)

            If Fehler&<>0

                Let Fehler&=@External("KERNEL32.DLL","GetLastError")
                Dim Geterror_buffer#,32000
                @External("KERNEL32","FormatMessageA",$1000,0,Fehler&,0,Geterror_buffer#,32000,0)
                Let Geterror_buffer$=@String$(Geterror_buffer#,0)
                Dispose Geterror_buffer#
                @Messagebox(Geterror_buffer$,"Ein Fehler ist aufgetreten!",16)

            Endif

        Endif

    Endif

    Dispose Allprivs#
    Dispose Domain#
    Dispose Sid#
    Dispose Privileg#
    Dispose Privilegset#
    Dispose Comparepriv#
    Dispose Unicode#
    Dispose Attribut#

Endproc

************** Ende der Prozedur zum Listen der Privilegien von Usern und Gruppen ********************
 
21.08.2005  
 



Zum Quelltext


Thementitel, max. 100 Zeichen.
 

Systemprofile:

Kein Systemprofil angelegt. [anlegen]

XProfan:

 Beitrag  Schrift  Smilies  ▼ 

Bitte anmelden um einen Beitrag zu verfassen.
 

Themenoptionen

2.803 Betrachtungen

Unbenanntvor 0 min.

Themeninformationen

Dieses Thema hat 1 Teilnehmer:

unbekannt (2x)


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