English
Forum

THE FILE HEARD ME!

 
- Page 1 -


Hello Profaner...

I have to, me soon time something mowers with the NT/NTFS File-Security To keep busy - Show and Change of Eigentümern and son stuff to that example. has someone such a thing already time made (with Security Descriptors worked) or there interest on the Topic?
 
04/11/05  
 



 
- Page 3 -



CB
Hello Andreas!

Habs already times through let.
[quote:dbd502c749]chosen Datei=C:WINDOWSWEBInstall.ocx
last API-Fehler=0
Return of GetVolumeInformation=1
last API-Fehler=0
Laufwerksflags=1110000000011111111
grabbed is einschränkbar
Ausgelesene Partition=NTFS
Windowsversion=5.1
Return of OpenProcessToken=1
last API-Fehler=0
Return of LookupPrivilegeValue=1
last API-Fehler=997
Return of AdjustTokenPrivileges=1
last API-Fehler=0
Return of GetFileSecurity=0
last API-Fehler=122
Erforderliche length the Security Descriptor=212
Return of GetFileSecurity=1
last API-Fehler=0
Return of IsValidSecurityDescriptor=1
last API-Fehler=0
Return of GetSecurityDescriptorOwner=1
last API-Fehler=0
Return of IsValidSid for Besitzer=1
last API-Fehler=0
Return of LookupAccountSid=1
last API-Fehler=997
Domainname=MMC3
owner the Datei=CB
Return of GetSecurityDescriptorGroup=1
last API-Fehler=997
Return of IsValidSid for primäre Gruppe=1
last API-Fehler=997
Return of LookupAccountSid=1
last API-Fehler=997
Domainname=MMC3
Primäre group the Datei=Kein
Return of CloseHandle=1
last API-Fehler=997[/quote:dbd502c749]
Christian
 
XProfan 8/9.1, Win XP, AMD 64/3200
04/24/05  
 



so The others rather the follow can what here happens, I will now time anhand of/ one Datenbankanwendung summarize:

Problem:
If one Administrator a (Profan) application on a NTFS-Festplatte installs, can evtl. User with eingeschränkten Rechten this program not perform, there tappt im dunkeln none Access to The Datenbankdateien having.
the has whom reason, that the Sicherheitseinstellungen the File (Security Descriptor) in the rule from the übergeordneten Verzeichnissen übernommen go.

Fazit:
the write vernünftiger Firmensoftware is without whom Access to whom Security Descriptor you don't say so.

Lösungsansatz:
we try The data the Security Descriptors of/ one NTFS-File auszulesen, circa Info over The Formatierung this data to obtain. One Change is then later over The dazugehörigen APIs very slight possible.

Vorarbeiten:
How with almost all Systemeinstellungen must here The pertinent Privilegien the aufrufenden Prozessses activate go, around the data read to (see PrivAktivate in the Download Area). to that Reading is that here particularly the privilege SeSecurityPrivilege.

how far are we:
Privilegien get successful activate and the owner of/ one File watts read and is so too änderbar (too moreover must then later but yet evtl. one privilege activate go). i think, that too the Reading the primären group functions.
 
04/24/05  
 



Voila...

so, now must I well first once what explain - if the eachone already know ought to, slay me Please not same:

The DACL places solid, which User and groups which Zugriffsrechte on The File having. at that Access to The File must the User quasi indicate, what it with the File to has (access rights). are these Zugriffsrechte not for suitable User present, gives the system whom Access to the lever not spare (Related API CreateFile).
The individual User are with ihren allowed or forbidden Zugriffsrechten in so-called ACEs inside the DACL stored. => is extreme vereinfacht!

here the Source - I need for Test a File with possible unterschiedlichen Einschränkungen for as many as possible User and groups - best several Files:
CompileMarkSeparation
Windowstyle 31
Windowtitle "File Security"
Window 0,0-640,440
DEF @GetFileSecurity(5) !"ADVAPI32","GetFileSecurityA"
DEF @GetLastError(0) !"KERNEL32","GetLastError"
DEF @SetLastError(1) !"KERNEL32","SetLastError"
DEF @LookupPrivilegeName(4)!"advapi32","LookupPrivilegeNameA" Ermittelt aus dem Luid eines Privilegs dessen Namen.
DEF @LookupPrivilegeValue(3) !"advapi32","LookupPrivilegeValueA" Ermittelt aus dem Namen eines Privilegs dessen Luid.
DEF @OpenProcessToken(3) !"advapi32","OpenProcessToken" Öffnet Einstellprozess.
DEF @AdjustTokenPrivileges(6) !"advapi32","AdjustTokenPrivileges" Stellt Privilegien ein.
DEF @GetCurrentProcess(0) !"kernel32","GetCurrentProcess" Ermittel das Handle des aktiven Prozesses.
DEF @CloseHandle(1) !"kernel32","CloseHandle" Schließt ein Handle (Programm).
Def @GetVolumeInformation(8) !"KERNEL32","GetVolumeInformationA"
DEF @GetSecurityDescriptorOwner(3) !"ADVAPI32","GetSecurityDescriptorOwner"
DEF @GetSecurityDescriptorGroup(3) !"ADVAPI32","GetSecurityDescriptorGroup"
DEF @GetSecurityDescriptorDACL(4) !"ADVAPI32","GetSecurityDescriptorDacl"
DEF @LookupAccountSid(7) !"ADVAPI32","LookupAccountSidA"
DEF @IsValidSecurityDescriptor(1) !"ADVAPI32","IsValidSecurityDescriptor"
DEF @IsValidSid(1) !"ADVAPI32","IsValidSid"
DEF @IsValidAcl(1) !"ADVAPI32","IsValidAcl"
DEF @GetAclInformation(4) !"ADVAPI32","GetAclInformation"
DEF @CopyMemory(3) !"kernel32","RtlMoveMemory"
DEF @GetAce(3) !"ADVAPI32","GetAce"
DEF @ConvertSidToStringSid(2) !"ADVAPI32","ConvertSidToStringSidA"
DEF @LocalFree(1) !"KERNEL32","LocalFree"
Declare Filename$,Fehler&,PSECURITY_DESCRIPTOR#,Needed#,Needed&
Declare NewState#,token#,Privileg#,Luid#,System$
Declare Laufwerk$,Label#,LFLAGS#,DAT#
DEclare SID#,GFLAG#
DEclare ACCOUNT_NAME#,SIZE_ACCOUNT#,Domain#,SIZE_DOMAIN#,SID_NAME_USE#
Declare Test&
Declare DACL_PRESENT#,P_ACL#,DACL_D#
Declare ACL_INFO#,Zähler&,ACE#,P_ACE#,ACE_SIZE&,STRSID#,P_STRSID#
Declare SID2#
LET Filename$=@LOADFILE$("Datei laden","Alle Dateien |*.*|Textdateien|*.TXT")

IF Filename$<>""

    CLEARLIST
    LET LAUFWERK$=@LEFT$(Filename$,3)
    DIM Label#,256
    DIM LFLAGS#,4
    DIM DAT#,256
    DIM STRSID#,256
    DIM P_STRSID#,4
    ADDSTRING "Gewählte Datei="+Filename$
    ADDSTRING "Letzter API-Fehler="+@STR$(@GetLastError())
    LET FEHLER&=@GetVolumeInformation(@ADDR(Laufwerk$),Label#,256,0,0,LFlags#,DAT#,256)
    ADDSTRING "Rückgabe von GetVolumeInformation="+@STR$(Fehler&)
    ADDSTRING "Letzter API-Fehler="+@STR$(@GetLastError())
    ADDSTRING "Laufwerksflags="+@BIN$(@LONG(LFLAGS#,0))

    IF @LONG(LFLAGS#,0) | $8 = @LONG(LFLAGS#,0)

        ADDSTRING "Zugriff ist einschränkbar"

    else

        ADDSTRING "Zugriff ist nicht einschränkbar"

    endif

    ADDSTRING "Ausgelesene Partition="+@String$(Dat#,0)
    dim token#,4
    DIM NewState#,16
    DIM Luid#,8
    DIM Privileg#,33
    ADDSTRING "Windowsversion="+$WINVER
    Long NewState#,0=1 Nur ein Privileg soll geändert werden
    Long NewState#,12=$00000002 Das Privileg soll eingeschaltet werden
    LET FEHLER&=@OpenProcessToken(@GetCurrentProcess(),$0020 | $0008,Token#)
    ADDSTRING "Rückgabe von OpenProcessToken="+@STR$(Fehler&)
    ADDSTRING "Letzter API-Fehler="+@STR$(@GetLastError())
    Clear Privileg#
    Clear LUID#
    STRING Privileg#,0="SeSecurityPrivilege"
    LET Fehler&=@LookupPrivilegeValue(@addr(System$),Privileg#,LUID#)
    ADDSTRING "Rückgabe von LookupPrivilegeValue="+@STR$(Fehler&)
    ADDSTRING "Letzter API-Fehler="+@STR$(@GetLastError())
    Byte NewState#,4=@Byte(Luid#,0)
    Byte NewState#,5=@Byte(Luid#,1)
    Byte NewState#,6=@Byte(Luid#,2)
    Byte NewState#,7=@Byte(Luid#,3)
    Byte NewState#,8=@Byte(Luid#,4)
    Byte NewState#,9=@Byte(Luid#,5)
    Byte NewState#,10=@Byte(Luid#,6)
    Byte NewState#,11=@Byte(Luid#,7)
    Let Fehler&=@AdjustTokenPrivileges(@LONG(Token#,0),0,NewState#,0,0,0)
    ADDSTRING "Rückgabe von AdjustTokenPrivileges="+@STR$(Fehler&)
    ADDSTRING "Letzter API-Fehler="+@STR$(@GetLastError())
    DIM Needed#,4
    Clear Needed#
    LET Fehler&=@GetFileSecurity(@ADDR(Filename$),$1 | $2 | $4 | $8,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&)
    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())
    DIM SID#,4
    DIM GFlag#,4
    Clear SID#
    Clear GFLAG#
    LET FEHLER&=@GetSecurityDescriptorOwner(PSECURITY_DESCRIPTOR#,SID#,GFLAG#)
    ADDSTRING "Rückgabe von GetSecurityDescriptorOwner="+@STR$(Fehler&)
    ADDSTRING "Letzter API-Fehler="+@STR$(@GetLastError())
    LET Fehler&=@IsValidSid(@long(SID#,0))
    ADDSTRING "Rückgabe von IsValidSid für den Besitzer="+@STR$(Fehler&)
    ADDSTRING "Letzter API-Fehler="+@STR$(@GetLastError())
    DIM ACCOUNT_NAME#,256
    DIM SIZE_ACCOUNT#,4
    DIM Domain#,256
    DIM SIZE_DOMAIN#,4
    DIM SID_NAME_USE#,4
    Clear SID_NAME_USE#
    Clear ACCOUNT_NAME#
    Clear Domain#
    Long SIZE_ACCOUNT#,0=255
    LONG SIZE_DOMAIN#,0=255
    LET FEHLER&=@LookupAccountSid(@ADDR(System$),@Long(SID#,0),ACCOUNT_NAME#,SIZE_ACCOUNT#,Domain#,SIZE_DOMAIN#,SID_NAME_USE#)
    ADDSTRING "Rückgabe von LookupAccountSid="+@STR$(Fehler&)
    ADDSTRING "Letzter API-Fehler="+@STR$(@GetLastError())
    ADDSTRING "Domainname="+@String$(Domain#,0)
    ADDSTRING "Besitzer der Datei="+@String$(ACCOUNT_NAME#,0)
    Clear STRSID#
    LET FEHLER&=@ConvertSidToStringSid(@Long(SID#,0),P_STRSID#)
    @CopyMemory(STRSID#,@LONG(P_STRSID#,0),255)
    ADDSTRING "String-SID des Besitzers="+@STRING$(STRSID#,0)
    ADDSTRING "Rückgabe von ConvertSidToStringSid="+@STR$(Fehler&)
    ADDSTRING "Letzter API-Fehler="+@STR$(@GetLastError())
    LET Fehler&=@LocalFree(@LONG(P_STRSID#,0))
    ADDSTRING "Rückgabe von LocalFree für den String-SID="+@STR$(Fehler&)
    ADDSTRING "Letzter API-Fehler="+@STR$(@GetLastError())
    Clear SID_NAME_USE#
    Clear ACCOUNT_NAME#
    Clear Domain#
    Clear SID#
    Clear GFLAG#
    LET FEHLER&=@GetSecurityDescriptorGroup(PSECURITY_DESCRIPTOR#,SID#,GFLAG#)
    ADDSTRING "Rückgabe von GetSecurityDescriptorGroup="+@STR$(Fehler&)
    ADDSTRING "Letzter API-Fehler="+@STR$(@GetLastError())
    LET Fehler&=@IsValidSid(@long(SID#,0))
    ADDSTRING "Rückgabe von IsValidSid für die primäre Gruppe="+@STR$(Fehler&)
    ADDSTRING "Letzter API-Fehler="+@STR$(@GetLastError())
    Long SIZE_ACCOUNT#,0=255
    LONG SIZE_DOMAIN#,0=255
    LET FEHLER&=@LookupAccountSid(@ADDR(System$),@Long(SID#,0),ACCOUNT_NAME#,SIZE_ACCOUNT#,Domain#,SIZE_DOMAIN#,SID_NAME_USE#)
    ADDSTRING "Rückgabe von LookupAccountSid="+@STR$(Fehler&)
    ADDSTRING "Letzter API-Fehler="+@STR$(@GetLastError())
    ADDSTRING "Domainname="+@String$(Domain#,0)
    ADDSTRING "Primäre Gruppe der Datei="+@String$(ACCOUNT_NAME#,0)
    DIM DACL_PRESENT#,1
    DIM P_ACL#,4
    DIM DACL_D#,4
    Let Fehler&=@GetSecurityDescriptorDacl(PSECURITY_DESCRIPTOR#,DACL_PRESENT#,P_ACL#,DACL_D#)
    ADDSTRING "Rückgabe von GetSecurityDescriptorDacl="+@STR$(Fehler&)
    ADDSTRING "Letzter API-Fehler="+@STR$(@GetLastError())
    LET Fehler&=@IsValidAcl(@long(P_ACL#,0))
    ADDSTRING "Rückgabe von IsValidAcl für den DACL="+@STR$(Fehler&)
    ADDSTRING "Letzter API-Fehler="+@STR$(@GetLastError())
    DIM ACL_INFO#,12
    DIM P_ACE#,4
    Let Fehler&=@GetAclInformation(@long(P_ACL#,0),ACL_INFO#,12,2)
    ADDSTRING "Rückgabe von GetAclInformation="+@STR$(Fehler&)
    ADDSTRING "Letzter API-Fehler="+@STR$(@GetLastError())
    ADDSTRING "ACEs in ACL="+@STR$(@LONG(ACL_INFO#,0))
    LET Zähler&=0

    While Zähler&<@LONG(ACL_INFO#,0)

        Let Fehler&=@GetAce(@long(P_ACL#,0),Zähler&,P_ACE#)
        DIM ACE#,4
        @CopyMemory(ACE#,@LONG(P_ACE#,0),4)
        LET ACE_SIZE&=@Word(ACE#,2)
        ADDSTRING "Größe des "+@STR$(@INT(Zähler&+1))+".ACEs="+@STR$(@Word(ACE#,2))

        IF @BYTE(ACE#,0)=0

            ADDSTRING "ACE Typ des "+@STR$(@INT(Zähler&+1))+".ACEs=ACCESS_ALLOWED_ACE_TYPE"

        ElseIF @BYTE(ACE#,0)=1

            ADDSTRING "ACE Typ des "+@STR$(@INT(Zähler&+1))+".ACEs=ACCESS_DENIED_ACE_TYPE"

        ElseIF @BYTE(ACE#,0)=2

            ADDSTRING "ACE Typ des "+@STR$(@INT(Zähler&+1))+".ACEs=SYSTEM_AUDIT_ACE_TYPE"

        ElseIF @BYTE(ACE#,0)=3

            ADDSTRING "ACE Typ des "+@STR$(@INT(Zähler&+1))+".ACEs=SYSTEM_ALARM_ACE"

        endif

        Dispose ACE#
        DIM ACE#,ACE_SIZE&
        Clear SID_NAME_USE#
        Clear ACCOUNT_NAME#
        Clear Domain#
        Clear ACE#
        Long SIZE_ACCOUNT#,0=255
        LONG SIZE_DOMAIN#,0=255
        @CopyMemory(ACE#,@LONG(P_ACE#,0),ACE_SIZE&)
        DIM SID2#,ACE_SIZE&-8
        @CopyMemory(SID2#,@LONG(P_ACE#,0)+8,ACE_SIZE&-8)
        LET FEHLER&=@LookupAccountSid(@ADDR(System$),SID2#,ACCOUNT_NAME#,SIZE_ACCOUNT#,Domain#,SIZE_DOMAIN#,SID_NAME_USE#)
        ADDSTRING "Rückgabe von LookupAccountSid="+@STR$(Fehler&)
        ADDSTRING "Letzter API-Fehler="+@STR$(@GetLastError())
        ADDSTRING @STR$(Zähler&)+". ACE Bezogen auf SID="+@String$(ACCOUNT_NAME#,0)
        ADDSTRING @STR$(Zähler&)+". ACE Bezogen auf Domainname="+@String$(Domain#,0)
        ADDSTRING "Accessrechte des "+@STR$(Zähler&)+". ACEs=$"+@HEX$(@LONG(ACE#,4))
        LET Zähler&=Zähler&+1
        Dispose SID2#
        Dispose ACE#

    wend

    LET FEHLER&=@CloseHandle(@LONG(Token#,0))
    ADDSTRING "Rückgabe von CloseHandle="+@STR$(Fehler&)
    ADDSTRING "Letzter API-Fehler="+@STR$(@GetLastError())
    Dispose P_ACE#
    Dispose ACL_INFO#
    Dispose DACL_D#
    Dispose P_ACL#
    Dispose DACL_PRESENT#
    Dispose SID_NAME_USE#
    Dispose ACCOUNT_NAME#
    Dispose SIZE_ACCOUNT#
    Dispose Domain#
    Dispose SIZE_DOMAIN#
    Dispose SID#
    Dispose GFLAG#
    Dispose Luid#
    Dispose Privileg#
    Dispose NewState#
    Dispose token#
    Dispose Needed#
    Dispose PSECURITY_DESCRIPTOR#
    Dispose Label#
    Dispose LFlags#
    DISPOSE DAT#
    Dispose STRSID#
    Dispose P_STRSID#
    @Editbox("API Rückgaben",1)

Endif

While 0=0

    Waitinput

Wend


here yet The Testergebnisse:
[box:8db057e781]
chosen Datei=H:TestTest 2.doc
last API-Fehler=0
Return of GetVolumeInformation=1
last API-Fehler=0
Laufwerksflags=1110000000011111111
grabbed is einschränkbar
Ausgelesene Partition=NTFS
Windowsversion=5.0
Return of OpenProcessToken=1
last API-Fehler=0
Return of LookupPrivilegeValue=1
last API-Fehler=997
Return of AdjustTokenPrivileges=1
last API-Fehler=0
Return of GetFileSecurity=0
last API-Fehler=122
Erforderliche length the Security Descriptor=176
Return of GetFileSecurity=1
last API-Fehler=0
Return of IsValidSecurityDescriptor=1
last API-Fehler=0
Return of GetSecurityDescriptorOwner=1
last API-Fehler=0
Return of IsValidSid for Besitzer=1
last API-Fehler=0
Return of LookupAccountSid=1
last API-Fehler=997
Domainname=ANDREAS-n4WTRUA
owner the Datei=Andreas
String-SID the Besitzers=S-1-5-21-602162358-2111687655-1202660629-1000
Return of ConvertSidToStringSid=1
last API-Fehler=0
Return of LocalFree for String-SID=0
last API-Fehler=0
Return of GetSecurityDescriptorGroup=1
last API-Fehler=0
Return of IsValidSid for primäre Gruppe=1
last API-Fehler=0
Return of LookupAccountSid=1
last API-Fehler=997
Domainname=ANDREAS-n4WTRUA
Primäre group the Datei=Kein
Return of GetSecurityDescriptorDacl=1
last API-Fehler=997
Return of IsValidAcl for DACL=1
last API-Fehler=997
Return of GetAclInformation=1
last API-Fehler=997
ACEs in ACL=4
Size the 1.ACEs=24
ACE type the 1.ACEs=ACCESS_DENIED_ACE_TYPE
Return of LookupAccountSid=1
last API-Fehler=997
0. ACE related on SID=Hauptbenutzer
0. ACE related on Domainname=VORDEFINIERT
Accessrechte the 0. ACEs=$200A9
Size the 2.ACEs=24
ACE type the 2.ACEs=ACCESS_DENIED_ACE_TYPE
Return of LookupAccountSid=1
last API-Fehler=997
1. ACE related on SID=Hauptbenutzer
1. ACE related on Domainname=VORDEFINIERT
Accessrechte the 1. ACEs=$F00E9
Size the 3.ACEs=24
ACE type the 3.ACEs=ACCESS_ALLOWED_ACE_TYPE
Return of LookupAccountSid=1
last API-Fehler=997
2. ACE related on SID=Administratoren
2. ACE related on Domainname=VORDEFINIERT
Accessrechte the 2. ACEs=$1F01FF
Size the 4.ACEs=20
ACE type the 4.ACEs=ACCESS_ALLOWED_ACE_TYPE
Return of LookupAccountSid=1
last API-Fehler=997
3. ACE related on SID=Jeder
3. ACE related on Domainname=
Accessrechte the 3. ACEs=$120089
Return of CloseHandle=1
last API-Fehler=997
[/box:8db057e781]
[box:8db057e781]
chosen Datei=H:TestTest.doc
last API-Fehler=0
Return of GetVolumeInformation=1
last API-Fehler=0
Laufwerksflags=1110000000011111111
grabbed is einschränkbar
Ausgelesene Partition=NTFS
Windowsversion=5.0
Return of OpenProcessToken=1
last API-Fehler=0
Return of LookupPrivilegeValue=1
last API-Fehler=997
Return of AdjustTokenPrivileges=1
last API-Fehler=0
Return of GetFileSecurity=0
last API-Fehler=122
Erforderliche length the Security Descriptor=104
Return of GetFileSecurity=1
last API-Fehler=0
Return of IsValidSecurityDescriptor=1
last API-Fehler=0
Return of GetSecurityDescriptorOwner=1
last API-Fehler=0
Return of IsValidSid for Besitzer=1
last API-Fehler=0
Return of LookupAccountSid=1
last API-Fehler=997
Domainname=ANDREAS-n4WTRUA
owner the Datei=Andreas
String-SID the Besitzers=S-1-5-21-602162358-2111687655-1202660629-1000
Return of ConvertSidToStringSid=1
last API-Fehler=0
Return of LocalFree for String-SID=0
last API-Fehler=0
Return of GetSecurityDescriptorGroup=1
last API-Fehler=0
Return of IsValidSid for primäre Gruppe=1
last API-Fehler=0
Return of LookupAccountSid=1
last API-Fehler=997
Domainname=ANDREAS-n4WTRUA
Primäre group the Datei=Kein
Return of GetSecurityDescriptorDacl=1
last API-Fehler=997
Return of IsValidAcl for DACL=1
last API-Fehler=997
Return of GetAclInformation=1
last API-Fehler=997
ACEs in ACL=1
Size the 1.ACEs=20
ACE type the 1.ACEs=ACCESS_ALLOWED_ACE_TYPE
Return of LookupAccountSid=1
last API-Fehler=997
0. ACE related on SID=Jeder
0. ACE related on Domainname=
Accessrechte the 0. ACEs=$1F01FF
Return of CloseHandle=1
last API-Fehler=997
[/box:8db057e781]
and again standing here in the small XProfan Forum one Source More, on the itself already so some Programmierende whom head eingeschlagen has.

next to the testing have I yet a question:
I must To change the ACLs somehow on The names or SIDs the in the system vorhandenen User and groups come. has someone a idea, How to the on the elegantesten regelt?
 
04/25/05  
 




CB
Hello Andreas!
couple interesting Resultate:

1. XP on my private PC:
[quote:1dbcf84ece]chosen Datei=C:NTLDR
last API-Fehler=0
Return of GetVolumeInformation=1
last API-Fehler=0
Laufwerksflags=1110000000011111111
grabbed is einschränkbar
Ausgelesene Partition=NTFS
Windowsversion=5.1
Return of OpenProcessToken=1
last API-Fehler=0
Return of LookupPrivilegeValue=1
last API-Fehler=997
Return of AdjustTokenPrivileges=1
last API-Fehler=0
Return of GetFileSecurity=0
last API-Fehler=122
Erforderliche length the Security Descriptor=80
Return of GetFileSecurity=1
last API-Fehler=0
Return of IsValidSecurityDescriptor=1
last API-Fehler=0
Return of GetSecurityDescriptorOwner=1
last API-Fehler=0
Return of IsValidSid for Besitzer=1
last API-Fehler=0
Return of LookupAccountSid=1
last API-Fehler=997
Domainname=VORDEFINIERT
owner the Datei=Administratoren
String-SID the Besitzers=S-1-5-32-544
Return of ConvertSidToStringSid=1
last API-Fehler=0
Return of LocalFree for String-SID=0
last API-Fehler=0
Return of GetSecurityDescriptorGroup=1
last API-Fehler=0
Return of IsValidSid for primäre Gruppe=1
last API-Fehler=0
Return of LookupAccountSid=1
last API-Fehler=997
Domainname=VORDEFINIERT
Primäre group the Datei=Administratoren
Return of GetSecurityDescriptorDacl=1
last API-Fehler=997
Return of IsValidAcl for DACL=1
last API-Fehler=997
Return of GetAclInformation=1
last API-Fehler=997
ACEs in ACL=1
Size the 1.ACEs=20
ACE type the 1.ACEs=ACCESS_ALLOWED_ACE_TYPE
Return of LookupAccountSid=1
last API-Fehler=997
0. ACE related on SID=Jeder
0. ACE related on Domainname=
Accessrechte the 0. ACEs=$1F01FF
Return of CloseHandle=1
last API-Fehler=997
[/quote:1dbcf84ece]
2. NT:
see .jpg

3. XP per on companies-PC with only Benutzerrechten:
row 83: Memory-Variable isn't DIMensioniert.

4. mail you a couple Auszüge from of my Reg by PM - is some Interessante for you drin

Christian

10 kB
Hochgeladen:04/25/05
Downloadcounter34
Download
 
XProfan 8/9.1, Win XP, AMD 64/3200
04/25/05  
 



Hello Christian...

To Nr.1: sees still well from, or?

To Nr.2: These API there NT well not yet - is for the, what we think about, neither necessary.

ZU Nr.3: I have forget, to the usage some Memory-Variables To clearen. in the Security rächt itself the integrally angry!

To Nr.4: Please a Screenshot, Yes?

Korrektur (hopefully runs):
CompileMarkSeparation
Windowstyle 31
Windowtitle "File Security"
Window 0,0-640,440
DEF @GetFileSecurity(5) !"ADVAPI32","GetFileSecurityA"
DEF @GetLastError(0) !"KERNEL32","GetLastError"
DEF @SetLastError(1) !"KERNEL32","SetLastError"
DEF @LookupPrivilegeName(4)!"advapi32","LookupPrivilegeNameA" Ermittelt aus dem Luid eines Privilegs dessen Namen.
DEF @LookupPrivilegeValue(3) !"advapi32","LookupPrivilegeValueA" Ermittelt aus dem Namen eines Privilegs dessen Luid.
DEF @OpenProcessToken(3) !"advapi32","OpenProcessToken" Öffnet Einstellprozess.
DEF @AdjustTokenPrivileges(6) !"advapi32","AdjustTokenPrivileges" Stellt Privilegien ein.
DEF @GetCurrentProcess(0) !"kernel32","GetCurrentProcess" Ermittel das Handle des aktiven Prozesses.
DEF @CloseHandle(1) !"kernel32","CloseHandle" Schließt ein Handle (Programm).
Def @GetVolumeInformation(8) !"KERNEL32","GetVolumeInformationA"
DEF @GetSecurityDescriptorOwner(3) !"ADVAPI32","GetSecurityDescriptorOwner"
DEF @GetSecurityDescriptorGroup(3) !"ADVAPI32","GetSecurityDescriptorGroup"
DEF @GetSecurityDescriptorDACL(4) !"ADVAPI32","GetSecurityDescriptorDacl"
DEF @LookupAccountSid(7) !"ADVAPI32","LookupAccountSidA"
DEF @IsValidSecurityDescriptor(1) !"ADVAPI32","IsValidSecurityDescriptor"
DEF @IsValidSid(1) !"ADVAPI32","IsValidSid"
DEF @IsValidAcl(1) !"ADVAPI32","IsValidAcl"
DEF @GetAclInformation(4) !"ADVAPI32","GetAclInformation"
DEF @CopyMemory(3) !"kernel32","RtlMoveMemory"
DEF @GetAce(3) !"ADVAPI32","GetAce"
DEF @ConvertSidToStringSid(2) !"ADVAPI32","ConvertSidToStringSidA"
DEF @LocalFree(1) !"KERNEL32","LocalFree"
Declare Filename$,Fehler&,PSECURITY_DESCRIPTOR#,Needed#,Needed&
Declare NewState#,token#,Privileg#,Luid#,System$
Declare Laufwerk$,Label#,LFLAGS#,DAT#
DEclare SID#,GFLAG#
DEclare ACCOUNT_NAME#,SIZE_ACCOUNT#,Domain#,SIZE_DOMAIN#,SID_NAME_USE#
Declare Test&
Declare DACL_PRESENT#,P_ACL#,DACL_D#
Declare ACL_INFO#,Zähler&,ACE#,P_ACE#,ACE_SIZE&,STRSID#,P_STRSID#
Declare SID2#
LET Filename$=@LOADFILE$("Datei laden","Alle Dateien |*.*|Textdateien|*.TXT")

IF Filename$<>""

    CLEARLIST
    LET LAUFWERK$=@LEFT$(Filename$,3)
    DIM Label#,256
    DIM LFLAGS#,4
    DIM DAT#,256
    DIM STRSID#,256
    DIM P_STRSID#,4
    ADDSTRING "Gewählte Datei="+Filename$
    ADDSTRING "Letzter API-Fehler="+@STR$(@GetLastError())
    LET FEHLER&=@GetVolumeInformation(@ADDR(Laufwerk$),Label#,256,0,0,LFlags#,DAT#,256)
    ADDSTRING "Rückgabe von GetVolumeInformation="+@STR$(Fehler&)
    ADDSTRING "Letzter API-Fehler="+@STR$(@GetLastError())
    ADDSTRING "Laufwerksflags="+@BIN$(@LONG(LFLAGS#,0))

    IF @LONG(LFLAGS#,0) | $8 = @LONG(LFLAGS#,0)

        ADDSTRING "Zugriff ist einschränkbar"

    else

        ADDSTRING "Zugriff ist nicht einschränkbar"

    endif

    ADDSTRING "Ausgelesene Partition="+@String$(Dat#,0)
    dim token#,4
    DIM NewState#,16
    DIM Luid#,8
    DIM Privileg#,33
    ADDSTRING "Windowsversion="+$WINVER
    Long NewState#,0=1 Nur ein Privileg soll geändert werden
    Long NewState#,12=$00000002 Das Privileg soll eingeschaltet werden
    LET FEHLER&=@OpenProcessToken(@GetCurrentProcess(),$0020 | $0008,Token#)
    ADDSTRING "Rückgabe von OpenProcessToken="+@STR$(Fehler&)
    ADDSTRING "Letzter API-Fehler="+@STR$(@GetLastError())
    Clear Privileg#
    Clear LUID#
    STRING Privileg#,0="SeSecurityPrivilege"
    LET Fehler&=@LookupPrivilegeValue(@addr(System$),Privileg#,LUID#)
    ADDSTRING "Rückgabe von LookupPrivilegeValue="+@STR$(Fehler&)
    ADDSTRING "Letzter API-Fehler="+@STR$(@GetLastError())
    Byte NewState#,4=@Byte(Luid#,0)
    Byte NewState#,5=@Byte(Luid#,1)
    Byte NewState#,6=@Byte(Luid#,2)
    Byte NewState#,7=@Byte(Luid#,3)
    Byte NewState#,8=@Byte(Luid#,4)
    Byte NewState#,9=@Byte(Luid#,5)
    Byte NewState#,10=@Byte(Luid#,6)
    Byte NewState#,11=@Byte(Luid#,7)
    Let Fehler&=@AdjustTokenPrivileges(@LONG(Token#,0),0,NewState#,0,0,0)
    ADDSTRING "Rückgabe von AdjustTokenPrivileges="+@STR$(Fehler&)
    ADDSTRING "Letzter API-Fehler="+@STR$(@GetLastError())
    DIM Needed#,4
    Clear Needed#
    LET Fehler&=@GetFileSecurity(@ADDR(Filename$),$1 | $2 | $4 | $8,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&)
    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())
    DIM SID#,4
    DIM GFlag#,4
    Clear SID#
    Clear GFLAG#
    LET FEHLER&=@GetSecurityDescriptorOwner(PSECURITY_DESCRIPTOR#,SID#,GFLAG#)
    ADDSTRING "Rückgabe von GetSecurityDescriptorOwner="+@STR$(Fehler&)
    ADDSTRING "Letzter API-Fehler="+@STR$(@GetLastError())
    LET Fehler&=@IsValidSid(@long(SID#,0))
    ADDSTRING "Rückgabe von IsValidSid für den Besitzer="+@STR$(Fehler&)
    ADDSTRING "Letzter API-Fehler="+@STR$(@GetLastError())
    DIM ACCOUNT_NAME#,256
    DIM SIZE_ACCOUNT#,4
    DIM Domain#,256
    DIM SIZE_DOMAIN#,4
    DIM SID_NAME_USE#,4
    Clear SID_NAME_USE#
    Clear ACCOUNT_NAME#
    Clear Domain#
    Long SIZE_ACCOUNT#,0=255
    LONG SIZE_DOMAIN#,0=255
    LET FEHLER&=@LookupAccountSid(@ADDR(System$),@Long(SID#,0),ACCOUNT_NAME#,SIZE_ACCOUNT#,Domain#,SIZE_DOMAIN#,SID_NAME_USE#)
    ADDSTRING "Rückgabe von LookupAccountSid="+@STR$(Fehler&)
    ADDSTRING "Letzter API-Fehler="+@STR$(@GetLastError())
    ADDSTRING "Domainname="+@String$(Domain#,0)
    ADDSTRING "Besitzer der Datei="+@String$(ACCOUNT_NAME#,0)
    Clear STRSID#

    IF @VAL(@LEFT$($WINVER,3))>=5.0

        LET FEHLER&=@ConvertSidToStringSid(@Long(SID#,0),P_STRSID#)
        @CopyMemory(STRSID#,@LONG(P_STRSID#,0),255)
        ADDSTRING "String-SID des Besitzers="+@STRING$(STRSID#,0)
        ADDSTRING "Rückgabe von ConvertSidToStringSid="+@STR$(Fehler&)
        ADDSTRING "Letzter API-Fehler="+@STR$(@GetLastError())

    endif

    LET Fehler&=@LocalFree(@LONG(P_STRSID#,0))
    ADDSTRING "Rückgabe von LocalFree für den String-SID="+@STR$(Fehler&)
    ADDSTRING "Letzter API-Fehler="+@STR$(@GetLastError())
    Clear SID_NAME_USE#
    Clear ACCOUNT_NAME#
    Clear Domain#
    Clear SID#
    Clear GFLAG#
    LET FEHLER&=@GetSecurityDescriptorGroup(PSECURITY_DESCRIPTOR#,SID#,GFLAG#)
    ADDSTRING "Rückgabe von GetSecurityDescriptorGroup="+@STR$(Fehler&)
    ADDSTRING "Letzter API-Fehler="+@STR$(@GetLastError())
    LET Fehler&=@IsValidSid(@long(SID#,0))
    ADDSTRING "Rückgabe von IsValidSid für die primäre Gruppe="+@STR$(Fehler&)
    ADDSTRING "Letzter API-Fehler="+@STR$(@GetLastError())
    Long SIZE_ACCOUNT#,0=255
    LONG SIZE_DOMAIN#,0=255
    LET FEHLER&=@LookupAccountSid(@ADDR(System$),@Long(SID#,0),ACCOUNT_NAME#,SIZE_ACCOUNT#,Domain#,SIZE_DOMAIN#,SID_NAME_USE#)
    ADDSTRING "Rückgabe von LookupAccountSid="+@STR$(Fehler&)
    ADDSTRING "Letzter API-Fehler="+@STR$(@GetLastError())
    ADDSTRING "Domainname="+@String$(Domain#,0)
    ADDSTRING "Primäre Gruppe der Datei="+@String$(ACCOUNT_NAME#,0)
    DIM DACL_PRESENT#,1
    DIM P_ACL#,4
    DIM DACL_D#,4
    Let Fehler&=@GetSecurityDescriptorDacl(PSECURITY_DESCRIPTOR#,DACL_PRESENT#,P_ACL#,DACL_D#)
    ADDSTRING "Rückgabe von GetSecurityDescriptorDacl="+@STR$(Fehler&)
    ADDSTRING "Letzter API-Fehler="+@STR$(@GetLastError())
    LET Fehler&=@IsValidAcl(@long(P_ACL#,0))
    ADDSTRING "Rückgabe von IsValidAcl für den DACL="+@STR$(Fehler&)
    ADDSTRING "Letzter API-Fehler="+@STR$(@GetLastError())
    DIM ACL_INFO#,12
    DIM P_ACE#,4
    CLEAR ACL_INFO#
    Let Fehler&=@GetAclInformation(@long(P_ACL#,0),ACL_INFO#,12,2)
    ADDSTRING "Rückgabe von GetAclInformation="+@STR$(Fehler&)
    ADDSTRING "Letzter API-Fehler="+@STR$(@GetLastError())
    ADDSTRING "ACEs in ACL="+@STR$(@LONG(ACL_INFO#,0))
    LET Zähler&=0

    While Zähler&<@LONG(ACL_INFO#,0)

        Clear P_ACE#
        Let Fehler&=@GetAce(@long(P_ACL#,0),Zähler&,P_ACE#)
        DIM ACE#,4
        @CopyMemory(ACE#,@LONG(P_ACE#,0),4)
        LET ACE_SIZE&=@Word(ACE#,2)
        ADDSTRING "Größe des "+@STR$(@INT(Zähler&+1))+".ACEs="+@STR$(@Word(ACE#,2))

        IF @BYTE(ACE#,0)=0

            ADDSTRING "ACE Typ des "+@STR$(@INT(Zähler&+1))+".ACEs=ACCESS_ALLOWED_ACE_TYPE"

        ElseIF @BYTE(ACE#,0)=1

            ADDSTRING "ACE Typ des "+@STR$(@INT(Zähler&+1))+".ACEs=ACCESS_DENIED_ACE_TYPE"

        ElseIF @BYTE(ACE#,0)=2

            ADDSTRING "ACE Typ des "+@STR$(@INT(Zähler&+1))+".ACEs=SYSTEM_AUDIT_ACE_TYPE"

        ElseIF @BYTE(ACE#,0)=3

            ADDSTRING "ACE Typ des "+@STR$(@INT(Zähler&+1))+".ACEs=SYSTEM_ALARM_ACE"

        endif

        Dispose ACE#
        DIM ACE#,ACE_SIZE&
        Clear SID_NAME_USE#
        Clear ACCOUNT_NAME#
        Clear Domain#
        Clear ACE#
        Long SIZE_ACCOUNT#,0=255
        LONG SIZE_DOMAIN#,0=255
        @CopyMemory(ACE#,@LONG(P_ACE#,0),ACE_SIZE&)
        DIM SID2#,ACE_SIZE&-8
        @CopyMemory(SID2#,@LONG(P_ACE#,0)+8,ACE_SIZE&-8)
        LET FEHLER&=@LookupAccountSid(@ADDR(System$),SID2#,ACCOUNT_NAME#,SIZE_ACCOUNT#,Domain#,SIZE_DOMAIN#,SID_NAME_USE#)
        ADDSTRING "Rückgabe von LookupAccountSid="+@STR$(Fehler&)
        ADDSTRING "Letzter API-Fehler="+@STR$(@GetLastError())
        ADDSTRING @STR$(Zähler&)+". ACE Bezogen auf SID="+@String$(ACCOUNT_NAME#,0)
        ADDSTRING @STR$(Zähler&)+". ACE Bezogen auf Domainname="+@String$(Domain#,0)
        ADDSTRING "Accessrechte des "+@STR$(Zähler&)+". ACEs=$"+@HEX$(@LONG(ACE#,4))
        LET Zähler&=Zähler&+1
        Dispose SID2#
        Dispose ACE#

    wend

    LET FEHLER&=@CloseHandle(@LONG(Token#,0))
    ADDSTRING "Rückgabe von CloseHandle="+@STR$(Fehler&)
    ADDSTRING "Letzter API-Fehler="+@STR$(@GetLastError())
    Dispose P_ACE#
    Dispose ACL_INFO#
    Dispose DACL_D#
    Dispose P_ACL#
    Dispose DACL_PRESENT#
    Dispose SID_NAME_USE#
    Dispose ACCOUNT_NAME#
    Dispose SIZE_ACCOUNT#
    Dispose Domain#
    Dispose SIZE_DOMAIN#
    Dispose SID#
    Dispose GFLAG#
    Dispose Luid#
    Dispose Privileg#
    Dispose NewState#
    Dispose token#
    Dispose Needed#
    Dispose PSECURITY_DESCRIPTOR#
    Dispose Label#
    Dispose LFlags#
    DISPOSE DAT#
    Dispose STRSID#
    Dispose P_STRSID#
    @Editbox("API Rückgaben",1)

Endif

While 0=0

    Waitinput

Wend

 
04/25/05  
 




CB
Hello Andreas!
sees objectively integrally well from!

Next Test:
XP private:
[quote:ddf59fc77f]chosen Datei=C:WINDOWSegedit.exe
last API-Fehler=0
Return of GetVolumeInformation=1
last API-Fehler=0
Laufwerksflags=1110000000011111111
grabbed is einschränkbar
Ausgelesene Partition=NTFS
Windowsversion=5.1
Return of OpenProcessToken=1
last API-Fehler=0
Return of LookupPrivilegeValue=1
last API-Fehler=997
Return of AdjustTokenPrivileges=1
last API-Fehler=0
Return of GetFileSecurity=0
last API-Fehler=122
Erforderliche length the Security Descriptor=80
Return of GetFileSecurity=1
last API-Fehler=0
Return of IsValidSecurityDescriptor=1
last API-Fehler=0
Return of GetSecurityDescriptorOwner=1
last API-Fehler=0
Return of IsValidSid for Besitzer=1
last API-Fehler=0
Return of LookupAccountSid=1
last API-Fehler=997
Domainname=VORDEFINIERT
owner the Datei=Administratoren
String-SID the Besitzers=S-1-5-32-544
Return of ConvertSidToStringSid=1
last API-Fehler=0
Return of LocalFree for String-SID=0
last API-Fehler=0
Return of GetSecurityDescriptorGroup=1
last API-Fehler=0
Return of IsValidSid for primäre Gruppe=1
last API-Fehler=0
Return of LookupAccountSid=1
last API-Fehler=997
Domainname=VORDEFINIERT
Primäre group the Datei=Administratoren
Return of GetSecurityDescriptorDacl=1
last API-Fehler=997
Return of IsValidAcl for DACL=1
last API-Fehler=997
Return of GetAclInformation=1
last API-Fehler=997
ACEs in ACL=1
Size the 1.ACEs=20
ACE type the 1.ACEs=ACCESS_ALLOWED_ACE_TYPE
Return of LookupAccountSid=1
last API-Fehler=997
0. ACE related on SID=Jeder
0. ACE related on Domainname=
Accessrechte the 0. ACEs=$1F01FF
Return of CloseHandle=1
last API-Fehler=997
[/quote:ddf59fc77f]
NT: (working now)
[quote:ddf59fc77f]chosen Datei=C:WINNTegedit.exe
last API-Fehler=0
Return of GetVolumeInformation=1
last API-Fehler=0
Laufwerksflags=11111
grabbed is einschränkbar
Ausgelesene Partition=NTFS
Windowsversion=4.0
Return of OpenProcessToken=1
last API-Fehler=0
Return of LookupPrivilegeValue=1
last API-Fehler=0
Return of AdjustTokenPrivileges=1
last API-Fehler=0
Return of GetFileSecurity=0
last API-Fehler=122
Erforderliche length the Security Descriptor=176
Return of GetFileSecurity=1
last API-Fehler=0
Return of IsValidSecurityDescriptor=1
last API-Fehler=0
Return of GetSecurityDescriptorOwner=1
last API-Fehler=0
Return of IsValidSid for Besitzer=1
last API-Fehler=0
Return of LookupAccountSid=1
last API-Fehler=0
Domainname=VORDEFINIERT
owner the Datei=Administratoren
Return of LocalFree for String-SID=0
last API-Fehler=0
Return of GetSecurityDescriptorGroup=1
last API-Fehler=0
Return of IsValidSid for primäre Gruppe=1
last API-Fehler=0
Return of LookupAccountSid=1
last API-Fehler=0
Domainname=NT-AUTORITÄT
Primäre group the Datei=SYSTEM
Return of GetSecurityDescriptorDacl=1
last API-Fehler=0
Return of IsValidAcl for DACL=1
last API-Fehler=0
Return of GetAclInformation=1
last API-Fehler=0
ACEs in ACL=2
Size the 1.ACEs=24
ACE type the 1.ACEs=ACCESS_ALLOWED_ACE_TYPE
Return of LookupAccountSid=1
last API-Fehler=0
0. ACE related on SID=Jeder
0. ACE related on Domainname=
Accessrechte the 0. ACEs=$1F01FF
Size the 2.ACEs=36
ACE type the 2.ACEs=ACCESS_ALLOWED_ACE_TYPE
Return of LookupAccountSid=1
last API-Fehler=0
1. ACE related on SID=cb
1. ACE related on Domainname=GEV021PC01
Accessrechte the 1. ACEs=$1F01FF
Return of CloseHandle=1
last API-Fehler=0
[/quote:ddf59fc77f]
but XP on my companies-PC reports still: Memory-Variable in line 83 not dimensioniert.

Christian
 
XProfan 8/9.1, Win XP, AMD 64/3200
04/25/05  
 



New attempt:
CompileMarkSeparation
Windowstyle 31
Windowtitle "File Security"
Window 0,0-640,440
DEF @GetFileSecurity(5) !"ADVAPI32","GetFileSecurityA"
DEF @GetLastError(0) !"KERNEL32","GetLastError"
DEF @SetLastError(1) !"KERNEL32","SetLastError"
DEF @LookupPrivilegeName(4)!"advapi32","LookupPrivilegeNameA" Ermittelt aus dem Luid eines Privilegs dessen Namen.
DEF @LookupPrivilegeValue(3) !"advapi32","LookupPrivilegeValueA" Ermittelt aus dem Namen eines Privilegs dessen Luid.
DEF @OpenProcessToken(3) !"advapi32","OpenProcessToken" Öffnet Einstellprozess.
DEF @AdjustTokenPrivileges(6) !"advapi32","AdjustTokenPrivileges" Stellt Privilegien ein.
DEF @GetCurrentProcess(0) !"kernel32","GetCurrentProcess" Ermittel das Handle des aktiven Prozesses.
DEF @CloseHandle(1) !"kernel32","CloseHandle" Schließt ein Handle (Programm).
Def @GetVolumeInformation(8) !"KERNEL32","GetVolumeInformationA"
DEF @GetSecurityDescriptorOwner(3) !"ADVAPI32","GetSecurityDescriptorOwner"
DEF @GetSecurityDescriptorGroup(3) !"ADVAPI32","GetSecurityDescriptorGroup"
DEF @GetSecurityDescriptorDACL(4) !"ADVAPI32","GetSecurityDescriptorDacl"
DEF @LookupAccountSid(7) !"ADVAPI32","LookupAccountSidA"
DEF @IsValidSecurityDescriptor(1) !"ADVAPI32","IsValidSecurityDescriptor"
DEF @IsValidSid(1) !"ADVAPI32","IsValidSid"
DEF @IsValidAcl(1) !"ADVAPI32","IsValidAcl"
DEF @GetAclInformation(4) !"ADVAPI32","GetAclInformation"
DEF @CopyMemory(3) !"kernel32","RtlMoveMemory"
DEF @GetAce(3) !"ADVAPI32","GetAce"
DEF @ConvertSidToStringSid(2) !"ADVAPI32","ConvertSidToStringSidA"
DEF @LocalFree(1) !"KERNEL32","LocalFree"
Declare Filename$,Fehler&,PSECURITY_DESCRIPTOR#,Needed#,Needed&
Declare NewState#,token#,Privileg#,Luid#,System$
Declare Laufwerk$,Label#,LFLAGS#,DAT#
DEclare SID#,GFLAG#
DEclare ACCOUNT_NAME#,SIZE_ACCOUNT#,Domain#,SIZE_DOMAIN#,SID_NAME_USE#
Declare Test&
Declare DACL_PRESENT#,P_ACL#,DACL_D#
Declare ACL_INFO#,Zähler&,ACE#,P_ACE#,ACE_SIZE&,STRSID#,P_STRSID#
Declare SID2#
LET Filename$=@LOADFILE$("Datei laden","Alle Dateien |*.*|Textdateien|*.TXT")

IF Filename$<>""

    CLEARLIST
    LET LAUFWERK$=@LEFT$(Filename$,3)
    DIM Label#,256
    DIM LFLAGS#,4
    DIM DAT#,256
    DIM STRSID#,256
    DIM P_STRSID#,4
    ADDSTRING "Gewählte Datei="+Filename$
    ADDSTRING "Letzter API-Fehler="+@STR$(@GetLastError())
    LET FEHLER&=@GetVolumeInformation(@ADDR(Laufwerk$),Label#,256,0,0,LFlags#,DAT#,256)
    ADDSTRING "Rückgabe von GetVolumeInformation="+@STR$(Fehler&)
    ADDSTRING "Letzter API-Fehler="+@STR$(@GetLastError())
    ADDSTRING "Laufwerksflags="+@BIN$(@LONG(LFLAGS#,0))

    IF @LONG(LFLAGS#,0) | $8 = @LONG(LFLAGS#,0)

        ADDSTRING "Zugriff ist einschränkbar"

    else

        ADDSTRING "Zugriff ist nicht einschränkbar"

    endif

    ADDSTRING "Ausgelesene Partition="+@String$(Dat#,0)
    dim token#,4
    DIM NewState#,16
    DIM Luid#,8
    DIM Privileg#,33
    ADDSTRING "Windowsversion="+$WINVER
    Long NewState#,0=1 Nur ein Privileg soll geändert werden
    Long NewState#,12=$00000002 Das Privileg soll eingeschaltet werden
    LET FEHLER&=@OpenProcessToken(@GetCurrentProcess(),$0020 | $0008,Token#)
    ADDSTRING "Rückgabe von OpenProcessToken="+@STR$(Fehler&)
    ADDSTRING "Letzter API-Fehler="+@STR$(@GetLastError())
    Clear Privileg#
    Clear LUID#
    STRING Privileg#,0="SeSecurityPrivilege"
    LET Fehler&=@LookupPrivilegeValue(@addr(System$),Privileg#,LUID#)
    ADDSTRING "Rückgabe von LookupPrivilegeValue="+@STR$(Fehler&)
    ADDSTRING "Letzter API-Fehler="+@STR$(@GetLastError())
    Byte NewState#,4=@Byte(Luid#,0)
    Byte NewState#,5=@Byte(Luid#,1)
    Byte NewState#,6=@Byte(Luid#,2)
    Byte NewState#,7=@Byte(Luid#,3)
    Byte NewState#,8=@Byte(Luid#,4)
    Byte NewState#,9=@Byte(Luid#,5)
    Byte NewState#,10=@Byte(Luid#,6)
    Byte NewState#,11=@Byte(Luid#,7)
    Let Fehler&=@AdjustTokenPrivileges(@LONG(Token#,0),0,NewState#,0,0,0)
    ADDSTRING "Rückgabe von AdjustTokenPrivileges="+@STR$(Fehler&)
    ADDSTRING "Letzter API-Fehler="+@STR$(@GetLastError())
    DIM Needed#,4
    Clear Needed#
    LET Fehler&=@GetFileSecurity(@ADDR(Filename$),$1 | $2 | $4 | $8,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&)
    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())
    DIM SID#,4
    DIM GFlag#,4
    Clear SID#
    Clear GFLAG#
    LET FEHLER&=@GetSecurityDescriptorOwner(PSECURITY_DESCRIPTOR#,SID#,GFLAG#)
    ADDSTRING "Rückgabe von GetSecurityDescriptorOwner="+@STR$(Fehler&)
    ADDSTRING "Letzter API-Fehler="+@STR$(@GetLastError())
    LET Fehler&=@IsValidSid(@long(SID#,0))
    ADDSTRING "Rückgabe von IsValidSid für den Besitzer="+@STR$(Fehler&)
    ADDSTRING "Letzter API-Fehler="+@STR$(@GetLastError())
    DIM ACCOUNT_NAME#,256
    DIM SIZE_ACCOUNT#,4
    DIM Domain#,256
    DIM SIZE_DOMAIN#,4
    DIM SID_NAME_USE#,4
    Clear SID_NAME_USE#
    Clear ACCOUNT_NAME#
    Clear Domain#
    Long SIZE_ACCOUNT#,0=255
    LONG SIZE_DOMAIN#,0=255
    LET FEHLER&=@LookupAccountSid(@ADDR(System$),@Long(SID#,0),ACCOUNT_NAME#,SIZE_ACCOUNT#,Domain#,SIZE_DOMAIN#,SID_NAME_USE#)
    ADDSTRING "Rückgabe von LookupAccountSid="+@STR$(Fehler&)
    ADDSTRING "Letzter API-Fehler="+@STR$(@GetLastError())
    ADDSTRING "Domainname="+@String$(Domain#,0)
    ADDSTRING "Besitzer der Datei="+@String$(ACCOUNT_NAME#,0)
    Clear STRSID#

    IF @VAL(@LEFT$($WINVER,3))>=5.0

        LET FEHLER&=@ConvertSidToStringSid(@Long(SID#,0),P_STRSID#)
        @CopyMemory(STRSID#,@LONG(P_STRSID#,0),255)
        ADDSTRING "String-SID des Besitzers="+@STRING$(STRSID#,0)
        ADDSTRING "Rückgabe von ConvertSidToStringSid="+@STR$(Fehler&)
        ADDSTRING "Letzter API-Fehler="+@STR$(@GetLastError())

    endif

    LET Fehler&=@LocalFree(@LONG(P_STRSID#,0))
    ADDSTRING "Rückgabe von LocalFree für den String-SID="+@STR$(Fehler&)
    ADDSTRING "Letzter API-Fehler="+@STR$(@GetLastError())
    Clear SID_NAME_USE#
    Clear ACCOUNT_NAME#
    Clear Domain#
    Clear SID#
    Clear GFLAG#
    LET FEHLER&=@GetSecurityDescriptorGroup(PSECURITY_DESCRIPTOR#,SID#,GFLAG#)
    ADDSTRING "Rückgabe von GetSecurityDescriptorGroup="+@STR$(Fehler&)
    ADDSTRING "Letzter API-Fehler="+@STR$(@GetLastError())
    LET Fehler&=@IsValidSid(@long(SID#,0))
    ADDSTRING "Rückgabe von IsValidSid für die primäre Gruppe="+@STR$(Fehler&)
    ADDSTRING "Letzter API-Fehler="+@STR$(@GetLastError())
    Long SIZE_ACCOUNT#,0=255
    LONG SIZE_DOMAIN#,0=255
    LET FEHLER&=@LookupAccountSid(@ADDR(System$),@Long(SID#,0),ACCOUNT_NAME#,SIZE_ACCOUNT#,Domain#,SIZE_DOMAIN#,SID_NAME_USE#)
    ADDSTRING "Rückgabe von LookupAccountSid="+@STR$(Fehler&)
    ADDSTRING "Letzter API-Fehler="+@STR$(@GetLastError())
    ADDSTRING "Domainname="+@String$(Domain#,0)
    ADDSTRING "Primäre Gruppe der Datei="+@String$(ACCOUNT_NAME#,0)
    DIM DACL_PRESENT#,1
    DIM P_ACL#,4
    DIM DACL_D#,4
    Let Fehler&=@GetSecurityDescriptorDacl(PSECURITY_DESCRIPTOR#,DACL_PRESENT#,P_ACL#,DACL_D#)
    ADDSTRING "Rückgabe von GetSecurityDescriptorDacl="+@STR$(Fehler&)
    ADDSTRING "Letzter API-Fehler="+@STR$(@GetLastError())
    LET Fehler&=@IsValidAcl(@long(P_ACL#,0))
    ADDSTRING "Rückgabe von IsValidAcl für den DACL="+@STR$(Fehler&)
    ADDSTRING "Letzter API-Fehler="+@STR$(@GetLastError())
    DIM ACL_INFO#,12
    DIM P_ACE#,4
    CLEAR ACL_INFO#
    Let Fehler&=@GetAclInformation(@long(P_ACL#,0),ACL_INFO#,12,2)
    ADDSTRING "Rückgabe von GetAclInformation="+@STR$(Fehler&)
    ADDSTRING "Letzter API-Fehler="+@STR$(@GetLastError())
    ADDSTRING "ACEs in ACL="+@STR$(@LONG(ACL_INFO#,0))
    LET Zähler&=0

    IF @STR$(@LONG(ACL_INFO#,0))<>0

        While Zähler&<@LONG(ACL_INFO#,0)

            Clear P_ACE#
            Let Fehler&=@GetAce(@long(P_ACL#,0),Zähler&,P_ACE#)
            DIM ACE#,4
            Clear ACE#
            @CopyMemory(ACE#,@LONG(P_ACE#,0),4)
            LET ACE_SIZE&=@Word(ACE#,2)
            ADDSTRING "Größe des "+@STR$(@INT(Zähler&+1))+".ACEs="+@STR$(@Word(ACE#,2))

            IF @BYTE(ACE#,0)=0

                ADDSTRING "ACE Typ des "+@STR$(@INT(Zähler&+1))+".ACEs=ACCESS_ALLOWED_ACE_TYPE"

            ElseIF @BYTE(ACE#,0)=1

                ADDSTRING "ACE Typ des "+@STR$(@INT(Zähler&+1))+".ACEs=ACCESS_DENIED_ACE_TYPE"

            ElseIF @BYTE(ACE#,0)=2

                ADDSTRING "ACE Typ des "+@STR$(@INT(Zähler&+1))+".ACEs=SYSTEM_AUDIT_ACE_TYPE"

            ElseIF @BYTE(ACE#,0)=3

                ADDSTRING "ACE Typ des "+@STR$(@INT(Zähler&+1))+".ACEs=SYSTEM_ALARM_ACE"

            endif

            Dispose ACE#
            DIM ACE#,ACE_SIZE&
            Clear SID_NAME_USE#
            Clear ACCOUNT_NAME#
            Clear Domain#
            Clear ACE#
            Long SIZE_ACCOUNT#,0=255
            LONG SIZE_DOMAIN#,0=255
            @CopyMemory(ACE#,@LONG(P_ACE#,0),ACE_SIZE&)
            DIM SID2#,ACE_SIZE&-8
            @CopyMemory(SID2#,@LONG(P_ACE#,0)+8,ACE_SIZE&-8)
            LET FEHLER&=@LookupAccountSid(@ADDR(System$),SID2#,ACCOUNT_NAME#,SIZE_ACCOUNT#,Domain#,SIZE_DOMAIN#,SID_NAME_USE#)
            ADDSTRING "Rückgabe von LookupAccountSid="+@STR$(Fehler&)
            ADDSTRING "Letzter API-Fehler="+@STR$(@GetLastError())
            ADDSTRING @STR$(Zähler&)+". ACE Bezogen auf SID="+@String$(ACCOUNT_NAME#,0)
            ADDSTRING @STR$(Zähler&)+". ACE Bezogen auf Domainname="+@String$(Domain#,0)
            ADDSTRING "Accessrechte des "+@STR$(Zähler&)+". ACEs=$"+@HEX$(@LONG(ACE#,4))
            LET Zähler&=Zähler&+1
            Dispose SID2#
            Dispose ACE#

        wend

    Endif

    LET FEHLER&=@CloseHandle(@LONG(Token#,0))
    ADDSTRING "Rückgabe von CloseHandle="+@STR$(Fehler&)
    ADDSTRING "Letzter API-Fehler="+@STR$(@GetLastError())
    Dispose P_ACE#
    Dispose ACL_INFO#
    Dispose DACL_D#
    Dispose P_ACL#
    Dispose DACL_PRESENT#
    Dispose SID_NAME_USE#
    Dispose ACCOUNT_NAME#
    Dispose SIZE_ACCOUNT#
    Dispose Domain#
    Dispose SIZE_DOMAIN#
    Dispose SID#
    Dispose GFLAG#
    Dispose Luid#
    Dispose Privileg#
    Dispose NewState#
    Dispose token#
    Dispose Needed#
    Dispose PSECURITY_DESCRIPTOR#
    Dispose Label#
    Dispose LFlags#
    DISPOSE DAT#
    Dispose STRSID#
    Dispose P_STRSID#
    @Editbox("API Rückgaben",1)

Endif

While 0=0

    Waitinput

Wend


without ACL is the Loop unnütz...
 
04/25/05  
 




CB
1. Priv. PC and
2. NT: completely identische Resultate
3. Unserem companies-PC missing yet always one DIM in line 83 ...

Christian
 
XProfan 8/9.1, Win XP, AMD 64/3200
04/25/05  
 



OK, yet what gefunde:
CompileMarkSeparation
Windowstyle 31
Windowtitle "File Security"
Window 0,0-640,440
DEF @GetFileSecurity(5) !"ADVAPI32","GetFileSecurityA"
DEF @GetLastError(0) !"KERNEL32","GetLastError"
DEF @SetLastError(1) !"KERNEL32","SetLastError"
DEF @LookupPrivilegeName(4)!"advapi32","LookupPrivilegeNameA" Ermittelt aus dem Luid eines Privilegs dessen Namen.
DEF @LookupPrivilegeValue(3) !"advapi32","LookupPrivilegeValueA" Ermittelt aus dem Namen eines Privilegs dessen Luid.
DEF @OpenProcessToken(3) !"advapi32","OpenProcessToken" Öffnet Einstellprozess.
DEF @AdjustTokenPrivileges(6) !"advapi32","AdjustTokenPrivileges" Stellt Privilegien ein.
DEF @GetCurrentProcess(0) !"kernel32","GetCurrentProcess" Ermittel das Handle des aktiven Prozesses.
DEF @CloseHandle(1) !"kernel32","CloseHandle" Schließt ein Handle (Programm).
Def @GetVolumeInformation(8) !"KERNEL32","GetVolumeInformationA"
DEF @GetSecurityDescriptorOwner(3) !"ADVAPI32","GetSecurityDescriptorOwner"
DEF @GetSecurityDescriptorGroup(3) !"ADVAPI32","GetSecurityDescriptorGroup"
DEF @GetSecurityDescriptorDACL(4) !"ADVAPI32","GetSecurityDescriptorDacl"
DEF @LookupAccountSid(7) !"ADVAPI32","LookupAccountSidA"
DEF @IsValidSecurityDescriptor(1) !"ADVAPI32","IsValidSecurityDescriptor"
DEF @IsValidSid(1) !"ADVAPI32","IsValidSid"
DEF @IsValidAcl(1) !"ADVAPI32","IsValidAcl"
DEF @GetAclInformation(4) !"ADVAPI32","GetAclInformation"
DEF @CopyMemory(3) !"kernel32","RtlMoveMemory"
DEF @GetAce(3) !"ADVAPI32","GetAce"
DEF @ConvertSidToStringSid(2) !"ADVAPI32","ConvertSidToStringSidA"
DEF @LocalFree(1) !"KERNEL32","LocalFree"
Declare Filename$,Fehler&,PSECURITY_DESCRIPTOR#,Needed#,Needed&
Declare NewState#,token#,Privileg#,Luid#,System$
Declare Laufwerk$,Label#,LFLAGS#,DAT#
DEclare SID#,GFLAG#
DEclare ACCOUNT_NAME#,SIZE_ACCOUNT#,Domain#,SIZE_DOMAIN#,SID_NAME_USE#
Declare Test&
Declare DACL_PRESENT#,P_ACL#,DACL_D#
Declare ACL_INFO#,Zähler&,ACE#,P_ACE#,ACE_SIZE&,STRSID#,P_STRSID#
Declare SID2#
LET Filename$=@LOADFILE$("Datei laden","Alle Dateien |*.*|Textdateien|*.TXT")

IF Filename$<>""

    CLEARLIST
    LET LAUFWERK$=@LEFT$(Filename$,3)
    DIM Label#,256
    DIM LFLAGS#,4
    DIM DAT#,256
    DIM STRSID#,256
    DIM P_STRSID#,4
    ADDSTRING "Gewählte Datei="+Filename$
    ADDSTRING "Letzter API-Fehler="+@STR$(@GetLastError())
    LET FEHLER&=@GetVolumeInformation(@ADDR(Laufwerk$),Label#,256,0,0,LFlags#,DAT#,256)
    ADDSTRING "Rückgabe von GetVolumeInformation="+@STR$(Fehler&)
    ADDSTRING "Letzter API-Fehler="+@STR$(@GetLastError())
    ADDSTRING "Laufwerksflags="+@BIN$(@LONG(LFLAGS#,0))

    IF @LONG(LFLAGS#,0) | $8 = @LONG(LFLAGS#,0)

        ADDSTRING "Zugriff ist einschränkbar"

    else

        ADDSTRING "Zugriff ist nicht einschränkbar"

    endif

    ADDSTRING "Ausgelesene Partition="+@String$(Dat#,0)
    dim token#,4
    DIM NewState#,16
    DIM Luid#,8
    DIM Privileg#,33
    ADDSTRING "Windowsversion="+$WINVER
    Long NewState#,0=1 Nur ein Privileg soll geändert werden
    Long NewState#,12=$00000002 Das Privileg soll eingeschaltet werden
    LET FEHLER&=@OpenProcessToken(@GetCurrentProcess(),$0020 | $0008,Token#)
    ADDSTRING "Rückgabe von OpenProcessToken="+@STR$(Fehler&)
    ADDSTRING "Letzter API-Fehler="+@STR$(@GetLastError())
    Clear Privileg#
    Clear LUID#
    STRING Privileg#,0="SeSecurityPrivilege"
    LET Fehler&=@LookupPrivilegeValue(@addr(System$),Privileg#,LUID#)
    ADDSTRING "Rückgabe von LookupPrivilegeValue="+@STR$(Fehler&)
    ADDSTRING "Letzter API-Fehler="+@STR$(@GetLastError())
    Byte NewState#,4=@Byte(Luid#,0)
    Byte NewState#,5=@Byte(Luid#,1)
    Byte NewState#,6=@Byte(Luid#,2)
    Byte NewState#,7=@Byte(Luid#,3)
    Byte NewState#,8=@Byte(Luid#,4)
    Byte NewState#,9=@Byte(Luid#,5)
    Byte NewState#,10=@Byte(Luid#,6)
    Byte NewState#,11=@Byte(Luid#,7)
    Let Fehler&=@AdjustTokenPrivileges(@LONG(Token#,0),0,NewState#,0,0,0)
    ADDSTRING "Rückgabe von AdjustTokenPrivileges="+@STR$(Fehler&)
    ADDSTRING "Letzter API-Fehler="+@STR$(@GetLastError())
    DIM Needed#,4
    Clear Needed#
    LET Fehler&=@GetFileSecurity(@ADDR(Filename$),$1 | $2 | $4 | $8,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&)
    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())
    DIM SID#,4
    DIM GFlag#,4
    Clear SID#
    Clear GFLAG#
    LET FEHLER&=@GetSecurityDescriptorOwner(PSECURITY_DESCRIPTOR#,SID#,GFLAG#)
    ADDSTRING "Rückgabe von GetSecurityDescriptorOwner="+@STR$(Fehler&)
    ADDSTRING "Letzter API-Fehler="+@STR$(@GetLastError())
    LET Fehler&=@IsValidSid(@long(SID#,0))
    ADDSTRING "Rückgabe von IsValidSid für den Besitzer="+@STR$(Fehler&)
    ADDSTRING "Letzter API-Fehler="+@STR$(@GetLastError())
    DIM ACCOUNT_NAME#,256
    DIM SIZE_ACCOUNT#,4
    DIM Domain#,256
    DIM SIZE_DOMAIN#,4
    DIM SID_NAME_USE#,4
    Clear SID_NAME_USE#
    Clear ACCOUNT_NAME#
    Clear Domain#
    Long SIZE_ACCOUNT#,0=255
    LONG SIZE_DOMAIN#,0=255
    LET FEHLER&=@LookupAccountSid(@ADDR(System$),@Long(SID#,0),ACCOUNT_NAME#,SIZE_ACCOUNT#,Domain#,SIZE_DOMAIN#,SID_NAME_USE#)
    ADDSTRING "Rückgabe von LookupAccountSid="+@STR$(Fehler&)
    ADDSTRING "Letzter API-Fehler="+@STR$(@GetLastError())
    ADDSTRING "Domainname="+@String$(Domain#,0)
    ADDSTRING "Besitzer der Datei="+@String$(ACCOUNT_NAME#,0)
    Clear STRSID#

    IF @VAL(@LEFT$($WINVER,3))>=5.0

        LET FEHLER&=@ConvertSidToStringSid(@Long(SID#,0),P_STRSID#)
        @CopyMemory(STRSID#,@LONG(P_STRSID#,0),255)
        ADDSTRING "String-SID des Besitzers="+@STRING$(STRSID#,0)
        ADDSTRING "Rückgabe von ConvertSidToStringSid="+@STR$(Fehler&)
        ADDSTRING "Letzter API-Fehler="+@STR$(@GetLastError())

    endif

    LET Fehler&=@LocalFree(@LONG(P_STRSID#,0))
    ADDSTRING "Rückgabe von LocalFree für den String-SID="+@STR$(Fehler&)
    ADDSTRING "Letzter API-Fehler="+@STR$(@GetLastError())
    Clear SID_NAME_USE#
    Clear ACCOUNT_NAME#
    Clear Domain#
    Clear SID#
    Clear GFLAG#
    LET FEHLER&=@GetSecurityDescriptorGroup(PSECURITY_DESCRIPTOR#,SID#,GFLAG#)
    ADDSTRING "Rückgabe von GetSecurityDescriptorGroup="+@STR$(Fehler&)
    ADDSTRING "Letzter API-Fehler="+@STR$(@GetLastError())
    LET Fehler&=@IsValidSid(@long(SID#,0))
    ADDSTRING "Rückgabe von IsValidSid für die primäre Gruppe="+@STR$(Fehler&)
    ADDSTRING "Letzter API-Fehler="+@STR$(@GetLastError())
    Long SIZE_ACCOUNT#,0=255
    LONG SIZE_DOMAIN#,0=255
    LET FEHLER&=@LookupAccountSid(@ADDR(System$),@Long(SID#,0),ACCOUNT_NAME#,SIZE_ACCOUNT#,Domain#,SIZE_DOMAIN#,SID_NAME_USE#)
    ADDSTRING "Rückgabe von LookupAccountSid="+@STR$(Fehler&)
    ADDSTRING "Letzter API-Fehler="+@STR$(@GetLastError())
    ADDSTRING "Domainname="+@String$(Domain#,0)
    ADDSTRING "Primäre Gruppe der Datei="+@String$(ACCOUNT_NAME#,0)
    DIM DACL_PRESENT#,1
    DIM P_ACL#,4
    DIM DACL_D#,4
    Let Fehler&=@GetSecurityDescriptorDacl(PSECURITY_DESCRIPTOR#,DACL_PRESENT#,P_ACL#,DACL_D#)
    ADDSTRING "Rückgabe von GetSecurityDescriptorDacl="+@STR$(Fehler&)
    ADDSTRING "Letzter API-Fehler="+@STR$(@GetLastError())
    LET Fehler&=@IsValidAcl(@long(P_ACL#,0))
    ADDSTRING "Rückgabe von IsValidAcl für den DACL="+@STR$(Fehler&)
    ADDSTRING "Letzter API-Fehler="+@STR$(@GetLastError())

    IF Fehler&=1

        DIM ACL_INFO#,12
        DIM P_ACE#,4
        CLEAR ACL_INFO#
        Let Fehler&=@GetAclInformation(@long(P_ACL#,0),ACL_INFO#,12,2)
        ADDSTRING "Rückgabe von GetAclInformation="+@STR$(Fehler&)
        ADDSTRING "Letzter API-Fehler="+@STR$(@GetLastError())
        ADDSTRING "ACEs in ACL="+@STR$(@LONG(ACL_INFO#,0))
        LET Zähler&=0

        IF @STR$(@LONG(ACL_INFO#,0))<>0

            While Zähler&<@LONG(ACL_INFO#,0)

                Clear P_ACE#
                Let Fehler&=@GetAce(@long(P_ACL#,0),Zähler&,P_ACE#)
                DIM ACE#,4
                Clear ACE#
                @CopyMemory(ACE#,@LONG(P_ACE#,0),4)
                LET ACE_SIZE&=@Word(ACE#,2)
                ADDSTRING "Größe des "+@STR$(@INT(Zähler&+1))+".ACEs="+@STR$(@Word(ACE#,2))

                IF @BYTE(ACE#,0)=0

                    ADDSTRING "ACE Typ des "+@STR$(@INT(Zähler&+1))+".ACEs=ACCESS_ALLOWED_ACE_TYPE"

                ElseIF @BYTE(ACE#,0)=1

                    ADDSTRING "ACE Typ des "+@STR$(@INT(Zähler&+1))+".ACEs=ACCESS_DENIED_ACE_TYPE"

                ElseIF @BYTE(ACE#,0)=2

                    ADDSTRING "ACE Typ des "+@STR$(@INT(Zähler&+1))+".ACEs=SYSTEM_AUDIT_ACE_TYPE"

                ElseIF @BYTE(ACE#,0)=3

                    ADDSTRING "ACE Typ des "+@STR$(@INT(Zähler&+1))+".ACEs=SYSTEM_ALARM_ACE"

                endif

                Dispose ACE#
                DIM ACE#,ACE_SIZE&
                Clear SID_NAME_USE#
                Clear ACCOUNT_NAME#
                Clear Domain#
                Clear ACE#
                Long SIZE_ACCOUNT#,0=255
                LONG SIZE_DOMAIN#,0=255
                @CopyMemory(ACE#,@LONG(P_ACE#,0),ACE_SIZE&)
                DIM SID2#,ACE_SIZE&-8
                @CopyMemory(SID2#,@LONG(P_ACE#,0)+8,ACE_SIZE&-8)
                LET FEHLER&=@LookupAccountSid(@ADDR(System$),SID2#,ACCOUNT_NAME#,SIZE_ACCOUNT#,Domain#,SIZE_DOMAIN#,SID_NAME_USE#)
                ADDSTRING "Rückgabe von LookupAccountSid="+@STR$(Fehler&)
                ADDSTRING "Letzter API-Fehler="+@STR$(@GetLastError())
                ADDSTRING @STR$(Zähler&)+". ACE Bezogen auf SID="+@String$(ACCOUNT_NAME#,0)
                ADDSTRING @STR$(Zähler&)+". ACE Bezogen auf Domainname="+@String$(Domain#,0)
                ADDSTRING "Accessrechte des "+@STR$(Zähler&)+". ACEs=$"+@HEX$(@LONG(ACE#,4))
                LET Zähler&=Zähler&+1
                Dispose SID2#
                Dispose ACE#

            wend

        Endif

    Endif

    LET FEHLER&=@CloseHandle(@LONG(Token#,0))
    ADDSTRING "Rückgabe von CloseHandle="+@STR$(Fehler&)
    ADDSTRING "Letzter API-Fehler="+@STR$(@GetLastError())
    Dispose P_ACE#
    Dispose ACL_INFO#
    Dispose DACL_D#
    Dispose P_ACL#
    Dispose DACL_PRESENT#
    Dispose SID_NAME_USE#
    Dispose ACCOUNT_NAME#
    Dispose SIZE_ACCOUNT#
    Dispose Domain#
    Dispose SIZE_DOMAIN#
    Dispose SID#
    Dispose GFLAG#
    Dispose Luid#
    Dispose Privileg#
    Dispose NewState#
    Dispose token#
    Dispose Needed#
    Dispose PSECURITY_DESCRIPTOR#
    Dispose Label#
    Dispose LFlags#
    DISPOSE DAT#
    Dispose STRSID#
    Dispose P_STRSID#
    @Editbox("API Rückgaben",1)

Endif

While 0=0

    Waitinput

Wend

 
04/25/05  
 




CB
any 3 again completely identical - does sorrow..

Christian
 
XProfan 8/9.1, Win XP, AMD 64/3200
04/25/05  
 



Hello Christian...

quite strange thing - but I have as a suspicion. now recovery?
CompileMarkSeparation
Windowstyle 31
Windowtitle "File Security"
Window 0,0-640,440
DEF @GetFileSecurity(5) !"ADVAPI32","GetFileSecurityA"
DEF @GetLastError(0) !"KERNEL32","GetLastError"
DEF @SetLastError(1) !"KERNEL32","SetLastError"
DEF @LookupPrivilegeName(4)!"advapi32","LookupPrivilegeNameA" Ermittelt aus dem Luid eines Privilegs dessen Namen.
DEF @LookupPrivilegeValue(3) !"advapi32","LookupPrivilegeValueA" Ermittelt aus dem Namen eines Privilegs dessen Luid.
DEF @OpenProcessToken(3) !"advapi32","OpenProcessToken" Öffnet Einstellprozess.
DEF @AdjustTokenPrivileges(6) !"advapi32","AdjustTokenPrivileges" Stellt Privilegien ein.
DEF @GetCurrentProcess(0) !"kernel32","GetCurrentProcess" Ermittel das Handle des aktiven Prozesses.
DEF @CloseHandle(1) !"kernel32","CloseHandle" Schließt ein Handle (Programm).
Def @GetVolumeInformation(8) !"KERNEL32","GetVolumeInformationA"
DEF @GetSecurityDescriptorOwner(3) !"ADVAPI32","GetSecurityDescriptorOwner"
DEF @GetSecurityDescriptorGroup(3) !"ADVAPI32","GetSecurityDescriptorGroup"
DEF @GetSecurityDescriptorDACL(4) !"ADVAPI32","GetSecurityDescriptorDacl"
DEF @LookupAccountSid(7) !"ADVAPI32","LookupAccountSidA"
DEF @IsValidSecurityDescriptor(1) !"ADVAPI32","IsValidSecurityDescriptor"
DEF @IsValidSid(1) !"ADVAPI32","IsValidSid"
DEF @IsValidAcl(1) !"ADVAPI32","IsValidAcl"
DEF @GetAclInformation(4) !"ADVAPI32","GetAclInformation"
DEF @CopyMemory(3) !"kernel32","RtlMoveMemory"
DEF @GetAce(3) !"ADVAPI32","GetAce"
DEF @ConvertSidToStringSid(2) !"ADVAPI32","ConvertSidToStringSidA"
DEF @LocalFree(1) !"KERNEL32","LocalFree"
Declare Filename$,Fehler&,PSECURITY_DESCRIPTOR#,Needed#,Needed&
Declare NewState#,token#,Privileg#,Luid#,System$
Declare Laufwerk$,Label#,LFLAGS#,DAT#
DEclare SID#,GFLAG#
DEclare ACCOUNT_NAME#,SIZE_ACCOUNT#,Domain#,SIZE_DOMAIN#,SID_NAME_USE#
Declare Test&
Declare DACL_PRESENT#,P_ACL#,DACL_D#
Declare ACL_INFO#,Zähler&,ACE#,P_ACE#,ACE_SIZE&,STRSID#,P_STRSID#
Declare SID2#,IO%,ADDR_NEWSTATE&
LET Filename$=@LOADFILE$("Datei laden","Alle Dateien |*.*|Textdateien|*.TXT")

IF Filename$<>""

    CLEARLIST
    LET LAUFWERK$=@LEFT$(Filename$,3)
    DIM Label#,256
    DIM LFLAGS#,4
    DIM DAT#,256
    DIM STRSID#,256
    DIM P_STRSID#,4
    ADDSTRING "Gewählte Datei="+Filename$
    ADDSTRING "Letzter API-Fehler="+@STR$(@GetLastError())
    LET FEHLER&=@GetVolumeInformation(@ADDR(Laufwerk$),Label#,256,0,0,LFlags#,DAT#,256)
    ADDSTRING "Rückgabe von GetVolumeInformation="+@STR$(Fehler&)
    ADDSTRING "Letzter API-Fehler="+@STR$(@GetLastError())
    ADDSTRING "Laufwerksflags="+@BIN$(@LONG(LFLAGS#,0))

    IF @LONG(LFLAGS#,0) | $8 = @LONG(LFLAGS#,0)

        ADDSTRING "Zugriff ist einschränkbar"

    else

        ADDSTRING "Zugriff ist nicht einschränkbar"

    endif

    ADDSTRING "Ausgelesene Partition="+@String$(Dat#,0)
    dim token#,4
    DIM NewState#,16
    DIM Luid#,8
    DIM Privileg#,33
    ADDSTRING "Windowsversion="+$WINVER
    Long NewState#,0=1 Nur ein Privileg soll geändert werden
    Long NewState#,12=$00000002 Das Privileg soll eingeschaltet werden
    LET FEHLER&=@OpenProcessToken(@GetCurrentProcess(),$0020 | $0008,Token#)
    ADDSTRING "Rückgabe von OpenProcessToken="+@STR$(Fehler&)
    ADDSTRING "Letzter API-Fehler="+@STR$(@GetLastError())
    Clear Privileg#
    Clear LUID#
    STRING Privileg#,0="SeSecurityPrivilege"
    LET Fehler&=@LookupPrivilegeValue(@addr(System$),Privileg#,LUID#)
    ADDSTRING "Rückgabe von LookupPrivilegeValue für SeSecurityPrivilege="+@STR$(Fehler&)
    ADDSTRING "Letzter API-Fehler="+@STR$(@GetLastError())
    ADDSTRING "Reset des API-Fehlers wird durchgeführt"
    @SetLastError(0)
    LET IO%=%IORESULT
    LET ADDR_NEWSTATE&=NewState#
    LET ADDR_NEWSTATE&=ADDR_NEWSTATE&+4
    @CopyMemory(ADDR_NEWSTATE&,Luid#,8)
    Let Fehler&=@AdjustTokenPrivileges(@LONG(Token#,0),0,NewState#,0,0,0)
    ADDSTRING "Rückgabe von AdjustTokenPrivileges="+@STR$(Fehler&)
    ADDSTRING "Letzter API-Fehler="+@STR$(@GetLastError())
    Clear NewState#
    Long NewState#,0=1 Nur ein Privileg soll geändert werden
    Long NewState#,12=$00000002 Das Privileg soll eingeschaltet werden
    Clear Privileg#
    Clear LUID#
    STRING Privileg#,0="SeTakeOwnershipPrivilege"
    LET Fehler&=@LookupPrivilegeValue(@addr(System$),Privileg#,LUID#)
    ADDSTRING "Rückgabe von LookupPrivilegeValue fur SeTakeOwnershipPrivilege="+@STR$(Fehler&)
    ADDSTRING "Letzter API-Fehler="+@STR$(@GetLastError())
    ADDSTRING "Reset des API-Fehlers wird durchgeführt"
    @SetLastError(0)
    LET IO%=%IORESULT
    LET ADDR_NEWSTATE&=NewState#
    LET ADDR_NEWSTATE&=ADDR_NEWSTATE&+4
    @CopyMemory(ADDR_NEWSTATE&,Luid#,8)
    Let Fehler&=@AdjustTokenPrivileges(@LONG(Token#,0),0,NewState#,0,0,0)
    ADDSTRING "Rückgabe von AdjustTokenPrivileges="+@STR$(Fehler&)
    ADDSTRING "Letzter API-Fehler="+@STR$(@GetLastError())
    DIM Needed#,4
    Clear Needed#
    LET Fehler&=@GetFileSecurity(@ADDR(Filename$),$1 | $2 | $4 | $8,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&)
    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())
    DIM SID#,4
    DIM GFlag#,4
    Clear SID#
    Clear GFLAG#
    LET FEHLER&=@GetSecurityDescriptorOwner(PSECURITY_DESCRIPTOR#,SID#,GFLAG#)
    ADDSTRING "Rückgabe von GetSecurityDescriptorOwner="+@STR$(Fehler&)
    ADDSTRING "Letzter API-Fehler="+@STR$(@GetLastError())
    LET Fehler&=@IsValidSid(@long(SID#,0))
    ADDSTRING "Rückgabe von IsValidSid für den Besitzer="+@STR$(Fehler&)
    ADDSTRING "Letzter API-Fehler="+@STR$(@GetLastError())
    DIM ACCOUNT_NAME#,256
    DIM SIZE_ACCOUNT#,4
    DIM Domain#,256
    DIM SIZE_DOMAIN#,4
    DIM SID_NAME_USE#,4
    Clear SID_NAME_USE#
    Clear ACCOUNT_NAME#
    Clear Domain#
    Long SIZE_ACCOUNT#,0=255
    LONG SIZE_DOMAIN#,0=255
    LET FEHLER&=@LookupAccountSid(@ADDR(System$),@Long(SID#,0),ACCOUNT_NAME#,SIZE_ACCOUNT#,Domain#,SIZE_DOMAIN#,SID_NAME_USE#)
    ADDSTRING "Rückgabe von LookupAccountSid="+@STR$(Fehler&)
    ADDSTRING "Letzter API-Fehler="+@STR$(@GetLastError())
    ADDSTRING "Reset des API-Fehlers wird durchgeführt"
    @SetLastError(0)
    LET IO%=%IORESULT
    ADDSTRING "Domainname="+@String$(Domain#,0)
    ADDSTRING "Besitzer der Datei="+@String$(ACCOUNT_NAME#,0)
    Clear STRSID#

    IF @VAL(@LEFT$($WINVER,3))>=5.0

        LET FEHLER&=@ConvertSidToStringSid(@Long(SID#,0),P_STRSID#)
        @CopyMemory(STRSID#,@LONG(P_STRSID#,0),255)
        ADDSTRING "String-SID des Besitzers="+@STRING$(STRSID#,0)
        ADDSTRING "Rückgabe von ConvertSidToStringSid="+@STR$(Fehler&)
        ADDSTRING "Letzter API-Fehler="+@STR$(@GetLastError())

    endif

    LET Fehler&=@LocalFree(@LONG(P_STRSID#,0))
    ADDSTRING "Rückgabe von LocalFree für den String-SID="+@STR$(Fehler&)
    ADDSTRING "Letzter API-Fehler="+@STR$(@GetLastError())
    Clear SID_NAME_USE#
    Clear ACCOUNT_NAME#
    Clear Domain#
    Clear SID#
    Clear GFLAG#
    LET FEHLER&=@GetSecurityDescriptorGroup(PSECURITY_DESCRIPTOR#,SID#,GFLAG#)
    ADDSTRING "Rückgabe von GetSecurityDescriptorGroup="+@STR$(Fehler&)
    ADDSTRING "Letzter API-Fehler="+@STR$(@GetLastError())
    LET Fehler&=@IsValidSid(@long(SID#,0))
    ADDSTRING "Rückgabe von IsValidSid für die primäre Gruppe="+@STR$(Fehler&)
    ADDSTRING "Letzter API-Fehler="+@STR$(@GetLastError())
    Long SIZE_ACCOUNT#,0=255
    LONG SIZE_DOMAIN#,0=255
    LET FEHLER&=@LookupAccountSid(@ADDR(System$),@Long(SID#,0),ACCOUNT_NAME#,SIZE_ACCOUNT#,Domain#,SIZE_DOMAIN#,SID_NAME_USE#)
    ADDSTRING "Rückgabe von LookupAccountSid="+@STR$(Fehler&)
    ADDSTRING "Letzter API-Fehler="+@STR$(@GetLastError())
    ADDSTRING "Reset des API-Fehlers wird durchgeführt"
    @SetLastError(0)
    LET IO%=%IORESULT
    ADDSTRING "Domainname="+@String$(Domain#,0)
    ADDSTRING "Primäre Gruppe der Datei="+@String$(ACCOUNT_NAME#,0)
    DIM DACL_PRESENT#,1
    DIM P_ACL#,4
    DIM DACL_D#,4
    Let Fehler&=@GetSecurityDescriptorDacl(PSECURITY_DESCRIPTOR#,DACL_PRESENT#,P_ACL#,DACL_D#)
    ADDSTRING "Rückgabe von GetSecurityDescriptorDacl="+@STR$(Fehler&)
    ADDSTRING "Letzter API-Fehler="+@STR$(@GetLastError())
    LET Fehler&=@IsValidAcl(@long(P_ACL#,0))
    ADDSTRING "Rückgabe von IsValidAcl für den DACL="+@STR$(Fehler&)
    ADDSTRING "Letzter API-Fehler="+@STR$(@GetLastError())

    IF Fehler&=1

        DIM ACL_INFO#,12
        DIM P_ACE#,4
        CLEAR ACL_INFO#
        Let Fehler&=@GetAclInformation(@long(P_ACL#,0),ACL_INFO#,12,2)
        ADDSTRING "Rückgabe von GetAclInformation="+@STR$(Fehler&)
        ADDSTRING "Letzter API-Fehler="+@STR$(@GetLastError())
        ADDSTRING "ACEs in ACL="+@STR$(@LONG(ACL_INFO#,0))
        LET Zähler&=0

        IF @STR$(@LONG(ACL_INFO#,0))<>0

            While Zähler&<@LONG(ACL_INFO#,0)

                Clear P_ACE#
                Let Fehler&=@GetAce(@long(P_ACL#,0),Zähler&,P_ACE#)
                DIM ACE#,4
                Clear ACE#
                @CopyMemory(ACE#,@LONG(P_ACE#,0),4)
                LET ACE_SIZE&=@Word(ACE#,2)
                ADDSTRING "Größe des "+@STR$(@INT(Zähler&+1))+".ACEs="+@STR$(@Word(ACE#,2))

                IF @BYTE(ACE#,0)=0

                    ADDSTRING "ACE Typ des "+@STR$(@INT(Zähler&+1))+".ACEs=ACCESS_ALLOWED_ACE_TYPE"

                ElseIF @BYTE(ACE#,0)=1

                    ADDSTRING "ACE Typ des "+@STR$(@INT(Zähler&+1))+".ACEs=ACCESS_DENIED_ACE_TYPE"

                ElseIF @BYTE(ACE#,0)=2

                    ADDSTRING "ACE Typ des "+@STR$(@INT(Zähler&+1))+".ACEs=SYSTEM_AUDIT_ACE_TYPE"

                ElseIF @BYTE(ACE#,0)=3

                    ADDSTRING "ACE Typ des "+@STR$(@INT(Zähler&+1))+".ACEs=SYSTEM_ALARM_ACE"

                endif

                Dispose ACE#
                DIM ACE#,ACE_SIZE&
                Clear SID_NAME_USE#
                Clear ACCOUNT_NAME#
                Clear Domain#
                Clear ACE#
                Long SIZE_ACCOUNT#,0=255
                LONG SIZE_DOMAIN#,0=255
                @CopyMemory(ACE#,@LONG(P_ACE#,0),ACE_SIZE&)
                DIM SID2#,ACE_SIZE&-8
                @CopyMemory(SID2#,@LONG(P_ACE#,0)+8,ACE_SIZE&-8)
                LET FEHLER&=@LookupAccountSid(@ADDR(System$),SID2#,ACCOUNT_NAME#,SIZE_ACCOUNT#,Domain#,SIZE_DOMAIN#,SID_NAME_USE#)
                ADDSTRING "Rückgabe von LookupAccountSid="+@STR$(Fehler&)
                ADDSTRING "Letzter API-Fehler="+@STR$(@GetLastError())
                ADDSTRING "Reset des API-Fehlers wird durchgeführt"
                @SetLastError(0)
                LET IO%=%IORESULT
                ADDSTRING @STR$(Zähler&)+". ACE Bezogen auf SID="+@String$(ACCOUNT_NAME#,0)
                ADDSTRING @STR$(Zähler&)+". ACE Bezogen auf Domainname="+@String$(Domain#,0)
                ADDSTRING "Accessrechte des "+@STR$(Zähler&)+". ACEs=$"+@HEX$(@LONG(ACE#,4))
                LET Zähler&=Zähler&+1
                Dispose SID2#
                Dispose ACE#

            wend

        Endif

    Endif

    LET FEHLER&=@CloseHandle(@LONG(Token#,0))
    ADDSTRING "Rückgabe von CloseHandle="+@STR$(Fehler&)
    ADDSTRING "Letzter API-Fehler="+@STR$(@GetLastError())
    Dispose P_ACE#
    Dispose ACL_INFO#
    Dispose DACL_D#
    Dispose P_ACL#
    Dispose DACL_PRESENT#
    Dispose SID_NAME_USE#
    Dispose ACCOUNT_NAME#
    Dispose SIZE_ACCOUNT#
    Dispose Domain#
    Dispose SIZE_DOMAIN#
    Dispose SID#
    Dispose GFLAG#
    Dispose Luid#
    Dispose Privileg#
    Dispose NewState#
    Dispose token#
    Dispose Needed#
    Dispose PSECURITY_DESCRIPTOR#
    Dispose Label#
    Dispose LFlags#
    DISPOSE DAT#
    Dispose STRSID#
    Dispose P_STRSID#
    @Editbox("API Rückgaben",1)

Endif class=s4 href='./../../references-fonction/XProfan/while/'>While 0=0

    Waitinput

Wend

 
04/25/05  
 




CB
is one dornenreicher lane, but we catch the slow there:
1. Priv. XP:
[quote:ad081d6cfc]chosen Datei=C:Windowsegedit.exe
last API-Fehler=0
Return of GetVolumeInformation=1
last API-Fehler=0
Laufwerksflags=1110000000011111111
grabbed is einschränkbar
Ausgelesene Partition=NTFS
Windowsversion=5.1
Return of OpenProcessToken=1
last API-Fehler=0
Return of LookupPrivilegeValue for SeSecurityPrivilege=1
last API-Fehler=997
Reset the API-Fehlers becomes implemented
Return of AdjustTokenPrivileges=1
last API-Fehler=0
Return of LookupPrivilegeValue fur SeTakeOwnershipPrivilege=1
last API-Fehler=997
Reset the API-Fehlers becomes implemented
Return of AdjustTokenPrivileges=1
last API-Fehler=0
Return of GetFileSecurity=0
last API-Fehler=122
Erforderliche length the Security Descriptor=80
Return of GetFileSecurity=1
last API-Fehler=0
Return of IsValidSecurityDescriptor=1
last API-Fehler=0
Return of GetSecurityDescriptorOwner=1
last API-Fehler=0
Return of IsValidSid for Besitzer=1
last API-Fehler=0
Return of LookupAccountSid=1
last API-Fehler=997
Reset the API-Fehlers becomes implemented
Domainname=VORDEFINIERT
owner the Datei=Administratoren
String-SID the Besitzers=S-1-5-32-544
Return of ConvertSidToStringSid=1
last API-Fehler=0
Return of LocalFree for String-SID=0
last API-Fehler=0
Return of GetSecurityDescriptorGroup=1
last API-Fehler=0
Return of IsValidSid for primäre Gruppe=1
last API-Fehler=0
Return of LookupAccountSid=1
last API-Fehler=997
Reset the API-Fehlers becomes implemented
Domainname=VORDEFINIERT
Primäre group the Datei=Administratoren
Return of GetSecurityDescriptorDacl=1
last API-Fehler=0
Return of IsValidAcl for DACL=1
last API-Fehler=0
Return of GetAclInformation=1
last API-Fehler=0
ACEs in ACL=1
Size the 1.ACEs=20
ACE type the 1.ACEs=ACCESS_ALLOWED_ACE_TYPE
Return of LookupAccountSid=1
last API-Fehler=997
Reset the API-Fehlers becomes implemented
0. ACE related on SID=Jeder
0. ACE related on Domainname=
Accessrechte the 0. ACEs=$1F01FF
Return of CloseHandle=1
last API-Fehler=0[/quote:ad081d6cfc]
2. NT:
[quote:ad081d6cfc]chosen Datei=C:WINNTegedit.exe
last API-Fehler=0
Return of GetVolumeInformation=1
last API-Fehler=0
Laufwerksflags=11111
grabbed is einschränkbar
Ausgelesene Partition=NTFS
Windowsversion=4.0
Return of OpenProcessToken=1
last API-Fehler=0
Return of LookupPrivilegeValue for SeSecurityPrivilege=1
last API-Fehler=0
Reset the API-Fehlers becomes implemented
Return of AdjustTokenPrivileges=1
last API-Fehler=0
Return of LookupPrivilegeValue fur SeTakeOwnershipPrivilege=1
last API-Fehler=0
Reset the API-Fehlers becomes implemented
Return of AdjustTokenPrivileges=1
last API-Fehler=0
Return of GetFileSecurity=0
last API-Fehler=122
Erforderliche length the Security Descriptor=176
Return of GetFileSecurity=1
last API-Fehler=0
Return of IsValidSecurityDescriptor=1
last API-Fehler=0
Return of GetSecurityDescriptorOwner=1
last API-Fehler=0
Return of IsValidSid for Besitzer=1
last API-Fehler=0
Return of LookupAccountSid=1
last API-Fehler=0
Reset the API-Fehlers becomes implemented
Domainname=VORDEFINIERT
owner the Datei=Administratoren
Return of LocalFree for String-SID=0
last API-Fehler=0
Return of GetSecurityDescriptorGroup=1
last API-Fehler=0
Return of IsValidSid for primäre Gruppe=1
last API-Fehler=0
Return of LookupAccountSid=1
last API-Fehler=0
Reset the API-Fehlers becomes implemented
Domainname=NT-AUTORITÄT
Primäre group the Datei=SYSTEM
Return of GetSecurityDescriptorDacl=1
last API-Fehler=0
Return of IsValidAcl for DACL=1
last API-Fehler=0
Return of GetAclInformation=1
last API-Fehler=0
ACEs in ACL=2
Size the 1.ACEs=24
ACE type the 1.ACEs=ACCESS_ALLOWED_ACE_TYPE
Return of LookupAccountSid=1
last API-Fehler=0
Reset the API-Fehlers becomes implemented
0. ACE related on SID=Jeder
0. ACE related on Domainname=
Accessrechte the 0. ACEs=$1F01FF
Size the 2.ACEs=36
ACE type the 2.ACEs=ACCESS_ALLOWED_ACE_TYPE
Return of LookupAccountSid=1
last API-Fehler=0
Reset the API-Fehlers becomes implemented
1. ACE related on SID=cb
1. ACE related on Domainname=GEV021PC01
Accessrechte the 1. ACEs=$1F01FF
Return of CloseHandle=1
last API-Fehler=0[/quote:ad081d6cfc]
3. firm XP: Memory-Variable not DIMensioniert in line 99.

NT-Test can I first tommorrow again manage, if you 2000 and 98 interested, both had I on of/ one middle-aged box home.

Christian
 
XProfan 8/9.1, Win XP, AMD 64/3200
04/25/05  
 




Answer


Topictitle, max. 100 characters.
 

Systemprofile:

no Systemprofil laid out. [anlegen]

XProfan:

 Posting  Font  Smilies  ▼ 

Please register circa a Posting To verfassen.
 

Topic-Options

5.798 Views

Untitledvor 0 min.
JR11/04/14
Tommy01/30/14
Andreas Koch09/05/13
Stephie09/03/11

Themeninformationen



Admins  |  AGB  |  Applications  |  Authors  |  Chat  |  Privacy Policy  |  Download  |  Entrance  |  Help  |  Merchantportal  |  Imprint  |  Mart  |  Interfaces  |  SDK  |  Services  |  Games  |  Search  |  Support

One proposition all XProfan, The there's!


My XProfan
Private Messages
Own Storage Forum
Topics-Remember-List
Own Posts
Own Topics
Clipboard
Log off
 Deutsch English Français Español Italia
Translations

Privacy Policy


we use Cookies only as Session-Cookies because of the technical necessity and with us there no Cookies of Drittanbietern.

If you here on our Website click or navigate, stimmst You ours registration of Information in our Cookies on XProfan.Net To.

further Information To our Cookies and moreover, How You The control above keep, find You in ours nachfolgenden Datenschutzerklärung.


all rightDatenschutzerklärung
i want none Cookie