Forum | | | | - 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? |
| | | | |
| | | | - Page 2 - |
| | | au flip! have right! the whole ought to indeed in a Editbox: CompileMarkSeparationWindowstyle 31
Windowtitle "File Security"
Window 0,0-640,440
DEF @GetFileSecurity(5) !"ADVAPI32","GetFileSecurityA"
DEF @GetLastError(0) !"KERNEL32","GetLastError"
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"
Declare Filename$,Fehler&,SECURITY_INFORMATION#,PSECURITY_DESCRIPTOR#,Needed#
Declare NewState#,token#,Privileg#,Luid#,System$
Declare Laufwerk$,Label#,LFLAGS#,DAT#
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
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())
STRING Privileg#,0="SeSecurityPrivilege"
LET Fehler&=@LookupPrivilegeValue(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 SECURITY_INFORMATION#,4
DIM PSECURITY_DESCRIPTOR#,1024
DIM Needed#,4
LONG SECURITY_INFORMATION#,0=$1 | $2 | $4
LET Fehler&=@GetFileSecurity(@ADDR(Filename$),SECURITY_INFORMATION#,PSECURITY_DESCRIPTOR#,1024,Needed#)
ADDSTRING "Rückgabe von GetFileSecurity="+@STR$(Fehler&)
ADDSTRING "Letzter API-Fehler="+@STR$(@GetLastError())
@CloseHandle(@LONG(Token#,0))
Dispose Luid#
Dispose Privileg#
Dispose NewState#
Dispose token#
Dispose Needed#
Dispose PSECURITY_DESCRIPTOR#
Dispose SECURITY_INFORMATION#
Dispose Label#
Dispose LFlags#
DISPOSE DAT#
@Editbox("API Rückgaben",1)
Endif
While 0=0
Waitinput
Wend
|
| | | | |
| | CB | | | | | |
| | | here one source the the result in that clipboard writes. CompileMarkSeparationdeclare i&
Windowstyle 31
Windowtitle "File Security"
Window 0,0-640,440
DEF @GetFileSecurity(5) !"ADVAPI32","GetFileSecurityA"
DEF @GetLastError(0) !"KERNEL32","GetLastError"
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"
Declare Filename$,Fehler&,SECURITY_INFORMATION#,PSECURITY_DESCRIPTOR#,Needed#
Declare NewState#,token#,Privileg#,Luid#,System$
Declare Laufwerk$,Label#,LFLAGS#,DAT#
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
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())
STRING Privileg#,0="SeSecurityPrivilege"
LET Fehler&=@LookupPrivilegeValue(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 SECURITY_INFORMATION#,4
DIM PSECURITY_DESCRIPTOR#,1024
DIM Needed#,4
LONG SECURITY_INFORMATION#,0=$1 | $2 | $4
LET Fehler&=@GetFileSecurity(@ADDR(Filename$),SECURITY_INFORMATION#,PSECURITY_DESCRIPTOR#,1024,Needed#)
ADDSTRING "Rückgabe von GetFileSecurity="+@STR$(Fehler&)
ADDSTRING "Letzter API-Fehler="+@STR$(@GetLastError())
@CloseHandle(@LONG(Token#,0))
Dispose Luid#
Dispose Privileg#
Dispose NewState#
Dispose token#
Dispose Needed#
Dispose PSECURITY_DESCRIPTOR#
Dispose SECURITY_INFORMATION#
Dispose Label#
Dispose LFlags#
DISPOSE DAT#
clearclip
for i&:=0 to %getcount do begin;putclip listboxitem$(i&)+"
;end
Endif
Own Files: [quote:b411ece2f4]chosen Datei=c:winxpsystem32cmd.exe last API-Fehler=0 Return of GetVolumeInformation=1 last API-Fehler=0 Laufwerksflags=1010000000011111111 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=1 last API-Fehler=0[/quote:b411ece2f4] [quote:b411ece2f4]chosen Datei=c:autorun.inf last API-Fehler=0 Return of GetVolumeInformation=1 last API-Fehler=0 Laufwerksflags=1010000000011111111 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=1 last API-Fehler=0 [/quote:b411ece2f4] [quote:b411ece2f4] chosen Datei=Cokumente and EinstellungenPackard BellNTUSER.DAT last API-Fehler=0 Return of GetVolumeInformation=1 last API-Fehler=0 Laufwerksflags=1010000000011111111 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=1 last API-Fehler=0 [/quote:b411ece2f4] File of Guest: [quote:b411ece2f4]chosen Datei=Cokumente and EinstellungenGuestDesktopsetup Project V1.1.exe last API-Fehler=0 Return of GetVolumeInformation=1 last API-Fehler=0 Laufwerksflags=1010000000011111111 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=1 last API-Fehler=0 [/quote:b411ece2f4] salvo. |
| | | | |
| | | so one verdammter Mist! The same Sch... How with the LSA API - everywhere becomes 1 zurückgegeben - in the Endeffekt happens but quite nothing Erfolgreiches!
I have me already gewundert, Why it The IsValid... functions gives - now ists clear. it hakt yet with GetSecurityDescriptorOwner, whom Security Descriptor seem I to have - be me but too there not sure, whether the any Information contains. i'll today night time look, whether I yet on my own whom Durchblick get, otherwise I will whom code with the visible made trouble time poste. Perhaps has there Yes yet someone a idea - machmal liegts only on Kleinigkeiten...
|
| | | | |
| | | OK, I habs - here already time again what to that testing.
in the WIN32.HLP shining there one Error vorzuliegen: The second Parameter of GetFileSecurity is there as structure indicated - is in reality but only one plainer Flag. CompileMarkSeparationWindowstyle 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 @LookupAccountSid(7) !"ADVAPI32","LookupAccountSidA"
DEF @IsValidSecurityDescriptor(1) !"ADVAPI32","IsValidSecurityDescriptor"
DEF @IsValidSid(1) !"ADVAPI32","IsValidSid"
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&
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
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(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,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="+@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)
LET FEHLER&=@CloseHandle(@LONG(Token#,0))
ADDSTRING "Rückgabe von CloseHandle="+@STR$(Fehler&)
ADDSTRING "Letzter API-Fehler="+@STR$(@GetLastError())
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#
@Editbox("API Rückgaben",1)
Endif
While 0=0
4 href='./../../function-references/XProfan/waitinput/'>Waitinput
Wend
what I something strange find, is the following: I have world-wide not a only View source found, the the privilege SeSecurityPrivilege activate - so the thing but at all runs, is this absolutely necessary!
now GEHTS with the primären group moreover. then need absolutely Rückmeldungen of XP and NT, in the manner How tappt im dunkeln IF posted has.
Bislang is yet everything Kinderkram - almost to that Schluss Better get going then with the ACLs but hard and Heavy. the settle the values becomes then leichteste go. |
| | | | |
| | CB | [quote:4948bb6540]chosen Datei=DROFANXPROFAN 9XPSE.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=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=1 last API-Fehler=0 Return of LookupAccountSid=1 last API-Fehler=997 Domainname=MMC3 owner the Datei=CB Return of CloseHandle=1 last API-Fehler=997[/quote:4948bb6540] |
| | | | |
| | | Hello Christian...
best! Klappt means wonderful on XP. tommorrow GEHTS with groups moreover.
PS: with this practice of Microsoft there Fehlermeldungen auszugeben, is it no wonder, that itself nobody on The Security herantraut. Desweiteren would me yet brennend interested, whether The 997 Klamotten by Profane hervorgerufen go. can the time someone with Profan2Cpp compilieren? |
| | | | |
| | CB | Profan2cpp reports: row 68: String directly on externe function transfer CompileMarkSeparation String LUID#,0 = ?
Christian |
| | | | |
| | | Hello Christian...
there have I in Eifer the Gefechtes forget The address einzufügen. so might the fit: CompileMarkSeparationWindowstyle 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 @LookupAccountSid(7) !"ADVAPI32","LookupAccountSidA"
DEF @IsValidSecurityDescriptor(1) !"ADVAPI32","IsValidSecurityDescriptor"
DEF @IsValidSid(1) !"ADVAPI32","IsValidSid"
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&
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
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,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="+@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)
LET FEHLER&=@CloseHandle(@LONG(Token#,0))
ADDSTRING "Rückgabe von CloseHandle="+@STR$(Fehler&)
ADDSTRING "Letzter API-Fehler="+@STR$(@GetLastError())
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#
@Editbox("API Rückgaben",1)
Endif
While 0=0
4 href='./../../function-references/XProfan/waitinput/'>Waitinput
Wend
|
| | | | |
| | CB | [quote:70baefedd8]chosen Datei=C:WINDOWSexplorer.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=148 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=1 last API-Fehler=0 Return of LookupAccountSid=1 last API-Fehler=997 Domainname=VORDEFINIERT owner the Datei=Administratoren Return of CloseHandle=1 last API-Fehler=997[/quote:70baefedd8] Profan2cpp reports none Error More - moreover come I for want of C++ Compilers unfortunately not.
Christian |
| | | | |
| | | best Thanks already time...
hopefully compiliert me the still someone to C++ - I have The Befürchtung, that it there yet a Profanbug gives... |
| | | | |
| | | The primäre group shining with this story no role To play. here the View source moreover: CompileMarkSeparationWindowstyle 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 @LookupAccountSid(7) !"ADVAPI32","LookupAccountSidA"
DEF @IsValidSecurityDescriptor(1) !"ADVAPI32","IsValidSecurityDescriptor"
DEF @IsValidSid(1) !"ADVAPI32","IsValidSid"
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&
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
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 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)
LET FEHLER&=@CloseHandle(@LONG(Token#,0))
ADDSTRING "Rückgabe von CloseHandle="+@STR$(Fehler&)
ADDSTRING "Letzter API-Fehler="+@STR$(@GetLastError())
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#
@Editbox("API Rückgaben",1)
Endif
While 0= n>
Waitinput
Wend
yet time deeply durchatmen and today night GEHTS then with the ACL moreover. was bislang plainer as virtual, but without PrivAktivate had I alone on whom Privilegien days zugebracht. |
| | | | |
|
AnswerThemeninformationenthis Topic has 6 subscriber: |