Forum | | | | - page 1 - |
|  | allô Profaner...
j'ai avant, mich bientôt la fois quelque chose mäher avec qui NT/NTFS File-Security trop beschäftigen - Montrer et changement de Eigentümern et son Zeug zum Beispiel. Hat quelqu'un so quelque chose déjà la fois gemacht (avec Security Descriptors gearbeitet) ou bien gibt es intérêt à dem Thema? |
| | | | |
| | | | - page 4 - |
| |  | OK - maintenant es du tour. Füge la fois avant qui besagten la ligne une Editbox un et lasse dir qui Werte ausgeben - je denke mon le doute wird sich bestätigen. |
| | | | |
| |  CB | cela Blöde daran ist, qui je sur unserem Firmen-PC aucun eindeutige Zeilenzuordnung rendez-vous peux - je kanns là verständlicherweise seulement kompiliert testen et sur meinem privaten PC kriege je cet Fehlermeldung gar pas. Welchen Befehl la hâte Du là im le doute? et wieso kriege je cette faute seulement avec Benutzerrechten?
Christian |
| | | | |
| |  Ragnar Rehbein | pourquoi compilierst du pas avec XPSE ???
j'ai trop chacun version qui je im einsatz habe qui entsprechenden .enh - fichier gespeichert. dadurch habe je toujours qui richtige la ligne chez fehlermeldungen prêt.
je hartnäckigen fällen (windowsschutzverletzungen) übersetze je avec {$debug kernelout} et lasse mir den quellcode avec debugview Montrer.
r.r. |
| | | | |
| |  | allô Christian...
je crois, j'ai toi qui ganze Zeit pas richtig verstanden: tu as qui Probleme alors sur deinem Firmen-PC, et là es du seulement un User avec eingeschränkten Rechten et ne...aucune Admin?
je mets ici dans mon Code Systemeinstellungen. avec cela pas chacun Schwachkopf im System herumfummeln peux, sommes qui Systemeinstellungen par Privilegien abgesichert.
Um dir qui données des Security Descriptors sur qui API Montrer trop laisser, muss dein Account cela Privileg SeSecurityPrivilege besitzen. qui Besitz cet Privilegs wird u.a. par qui Gruppe geregelt, qui dein Account angehört (Administrator ou bien Benutzer avec eingeschränkten Rechten). dans qui règle sommes Privilegien deaktiviert, d.h. aussi Admins peut pas sans weiteres Systemeinstellungen sur qui API changement.
dans meinem Voir le texte source aktiviere je avec AdjustTokenPrivileges qui Privilegien im Token des aufrufenden Programms. qui Token est un einem Prozess (Programme) zugeordneter Speicherbereich, qui Infos sur den User contient, qui justement cela Programme ausführt - sich alors eingeloggt hat.
je schätze la fois, tu as cela Privileg gar pas, le moi ici aktivieren veux... comme Folge en liefert GetFileSecurity seulement Müll zurück. là GetFileSecurity u.a. qui Taille des Security Descriptors ausliest, ist Needed& wohl 0. chez DIM PSECURITY_DESCRIPTOR#,Needed& wird alors qui Bereich pas richtig dimensioniert. sous 2000 pouvoir dss aucun Probleme, je pourrait mir mais présenter, qui XP là quelque chose anders reagiert.
j'ai encore einmal quelque chose geändert et veux espérer, cela maintenant qui Fehlermeldungen ausbleiben.
Error 997 ist incidemment rien Schlimmes, solange qui aufrufende Funktion den Erfolg meldet. KompilierenMarqueSéparationWindowstyle 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)
ADDSTRING "Letzter API-Fehler nach CopyMemory="+@STR$(@GetLastError())
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)
ADDSTRING "Letzter API-Fehler nach CopyMemory="+@STR$(@GetLastError())
Let Fehler&=@AdjustTokenPrivileges(@LONG(Token#,0),0,NewState#,0,0,0)
ADDSTRING "Rückgabe von AdjustTokenPrivileges="+@STR$(Fehler&)
ADDSTRING "Letzter API-Fehler="+@STR$(@GetLastError())
ADDSTRING "Reset des API-Fehlers wird durchgeführt"
@SetLastError(0)
LET IO%=%IORESULT
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&)
CASE NEEDED&=0 : LET NEEDED&=1024
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)
E a>
Tandis que 0=0
Waitinput
Wend
cela zweite Privileg, le moi ici aktiviere, ist incidemment nötig, um incidemment en supplément nötig, um den propriétaire trop changement... |
| | | | |
| |  CB | cela 1. fais je oui - dadurch stimmen oui qui Zeilennummern dans qui .enh pas plus avec dem original Code überein - dans qui enh stehen alle Declares dans qui 1. la ligne, wohin stehen qui dans qui .prc? là verschiebt sich alles légèrement. Debuggen peux je dans qui Fa pas, weil je là ne...aucune Profan installer peux - si le rauskriegen, qui je là fremde Progs installiere, aussi habe je là seulement Benutzerrechte ...
Christian |
| | | | |
| |  | allô Christian...
Brauchst du là aussi pas testen - j'ai bloß qui ganze Zeit gedacht, du hättest cela Problem sur deinem calculateur trop Hause - comme Admin. Dass cela pas avec allen Useraccount funktioniert, ist vollkommen bien sûr et nachzuvollziehen - et dem brauchen wir aussi pas plus nachzugehen - alors seulement trop Hause testen. j'ai dir oui déjà la fois dit - ist alles rien pour Hacker, seulement pour Admins.
je werde mich bientôt encore dans den SACL reinknien et ensuite volonté alle Werte encore geändert...
qui Zeilennummer stimmt u.a. à cause de qui Leerzeilen pas. |
| | | | |
| |  CB | Erspart mir quelque chose travail - mais intéressé hätts mich déjà, wieso cet Fehlermeldung seulement avec Benutzerrechten auftritt...
Christian |
| | | | |
| |  Ragnar Rehbein | une autre gentille option ist qui compileroption -M chez XProfan9. ensuite wird une mapdatei pour qui zeilennummern erzeugt.
cet sollte beim trouver qui fehlerhaften la ligne aider. habe je bisher mais seulement kurz getestet. peux alors pas dire comment oui c'est ca vous ist.
r.r. |
| | | | |
| |  | allô Christian...
qui Erklärung, qui je im Augenblick habe, habe je oui déjà posté. si dem so ist, pourrait qui faute depuis dem letzten Voir le texte source behoben son.
encore une entier blöde Frage:
comme je mich avant einer Zeit avec den Privilegien et après avec qui LSA-Security-API beschäftigt habe, habe je so den impression bekommen, qui niemand de den XP et 2000 Fans (scheinbar Roland aussi pas) une blassen Schimmer en hat, comment cela Betriebsystem überhaupt dans etwa arbeitet. Selbst qui Sachen, qui du sur qui Registry erkannt la hâte, scheint ici à peine quelqu'un ( - ou bien sauf uns beiden gar aucun?) trop savons - ou bien qui, qui cela savons, behalten son savons pour sich.
dans comment large la hâte du verstanden, quoi là im Voir le texte source - et puis bezogen im Betriebssystem - jusqu'alors abläuft, ou bien sommes cela alles böhmishe Dörfer pour toi? und dir Je ne à Funktion chacun API, mais seulement tout autor, quoi là im Prinzip passiert... |
| | | | |
| |  | allô Ragnar...
Besten Dank pour den Hinweis, mais zumindestens je travaille encore avec Profan 7.5 . dans comment large la hâte du Einblick dans qui Security? j'ai lente so den impression, le moi qui einzige suis, qui sich jamais avec cela beschäftigt hat... |
| | | | |
| |  CB | allô Andreas! quoi qui Security angeht: j'ai mich déjà avant Jahren un bissel avec Netzwerken et Rechtevergaben etc. auseinandergesetzt et habe dadurch déjà une ungefähre Vorstellung, bloß reicht qui malheureusement pas aus, um Dir une grand Aider son trop peut, déjà plutôt avec qui Registry - avec qui habe je mich quelque chose intensiver befasst. Aussi hats mich toujours déjà intéressé, quoi là im Hintergrund so abläuft, zB beim Zugriff sur une Dossier, wohin dedans einer seconde un paire mille Schreib- et Lesezugriffe sur qui Reg. stattfinden. Gibt oui entier gentille Tools en supplément, de [...] beispielsweise... Speziell TokenMon (allez malheureusement seulement sous NT et 2000) pourrait je mir présenter qui vous uns weiterhilft. Christian |
| | | | |
| |  | allô Christian...
cela du toi bien dans qui Registry auskennst habe je mir déjà gedacht. j'ai deswegen une SID aussi dans Stringform dastellen laisser => siehe aussi en supplément HKEY_USERS. wohin gibts cet Tools? Sieht très schick aus! si dir là sonst irgenwas unklar ist - frag mich simple. je denke, je habs verstanden.
Aider werde je wohl à peine besoin - qui l'affaire entpuppt sich comme wesentlich einfacher comme alles autre, quoi je jusqu'alors im Securitybereich zusammengeschustert habe.
quoi je encore bräuchte, wäre une possible vollständige liste aller User et Gruppen eines Systems. à qui User suis je jusqu'alors toujours so herangekommen: - sous HKEY_LOCAL_MACHINESoftwareMicrosoftWindows NTCurrentVersionProfileListProfilesDirectory lese Je l' Pfad asus, dans dem qui Userprofile gespeichert sommes. - je cherche ensuite là pour den vorhandenen Verzeichnissen. - Zur Zeit vois je ensuite pour, si dans diesem Verzeichnis une NTUSER.DAT existiert. Besser wäre cependant ensuite LookupAccountName et IsValidSid trop verwenden, afin de testen, si cela Verzeichnis qui Loginname eines Users ist.
Du scheinst là dans qui Registry aussi einiges sur qui Gruppen trouvé trop avons - une concept comment on qui listen pourrait? |
| | | | |
|
répondreOptions du sujet | 6.382 Views |
Themeninformationencet Thema hat 6 participant: |