Français
Source/ Codesnippets

Dossier propriétaire changement

 
allô Profaner...

un propriétaire einer Dossier peux seulement volonté:
- qui User, qui par den Token des aufrufenden Prozesses personifiziert wird.
- une Gruppe, qui im Token des aufrufenden Prozesses avec dem Flag SE_GROUP_OWNER gekennzeichnet ist (siehe API GetTokenInformation).

Um einem anderen User un propriété trop klauen...
- doit qui Token des aufrufenden Prozesses cela Privileg SeTakeOwnershipPrivilege enthalten. Pour dem Hinzufügen est un Reboot erforderlich!
- doit im Token des aufrufenden Prozesses cela Privileg SeTakeOwnershipPrivilege aktiviert volonté!
KompilierenMarqueSéparation
DEF @OW_IsValidSecurityDescriptor(1) !ADVAPI32,IsValidSecurityDescriptor
DEF @OW_GetFileSecurity(5) !ADVAPI32,GetFileSecurityA
DEF @OW_GetLastError(0) !KERNEL32,GetLastError
DEF @OW_SetLastError(1) !KERNEL32,SetLastError
DEF @OW_GetSecurityDescriptorOwner(3) !ADVAPI32,GetSecurityDescriptorOwner
DEF @OW_IsValidSid(1) !ADVAPI32,IsValidSid
DEF @OW_LookupAccountSid(7) !ADVAPI32,LookupAccountSidA
DEF @OW_SetSecurityDescriptorOwner(3) !ADVAPI32,SetSecurityDescriptorOwner
Def @OW_GetVolumeInformation(8) !KERNEL32,GetVolumeInformationA
DEF @OW_LookupAccountName(7) !advapi32,LookupAccountNameA
DEF @OW_InitializeSecurityDescriptor(2) !ADVAPI32,InitializeSecurityDescriptor
DEF @OW_SetFileSecurity(3) !ADVAPI32,SetFileSecurityA
DEF @OW_LookupPrivilegeValue(3) !advapi32,LookupPrivilegeValueA Ermittelt aus dem Namen eines Privilegs dessen Luid.
DEF @OW_OpenProcessToken(3) !advapi32,OpenProcessToken Öffnet Einstellprozess.
DEF @OW_AdjustTokenPrivileges(6) !advapi32,AdjustTokenPrivileges Stellt Privilegien ein.
DEF @OW_GetCurrentProcess(0) !kernel32,GetCurrentProcess Ermittel das Handle des aktiven Prozesses.
DEF @OW_CopyMemory(3) !kernel32,RtlMoveMemory
DEF @OW_GetLastError(0) !KERNEL32,GetLastError

PROC SET_FILE_OWNER

    Parameters Filename_OW_$,OWNER_OW_$
    Declare NEEDED_ow_#,SIDa_ow_#,Fehler_ow_&,NEEDED_ow_&,PSECURITY_DESCRIPTOR_ow_#
    Declare SID_ow_#,GFLAG_ow_#,System_ow_$
    Declare SID_NAME_USE_ow_#,ACCOUNT_NAME_ow_#,Domain_ow_#
    Declare SIZE_ACCOUNT_ow_#,SIZE_DOMAIN_ow_#
    Declare LAUFWERK_OW_$,Label_OW_#,LFlags_OW_#,DAT_OW_#
    Declare OldOwner_OW_$,TOKEN_OW_#
    Declare NewState_OW_#,Privileg_OW_#,LUID_OW_#
    DIM Label_OW_#,256
    DIM LFlags_OW_#,4
    DIM DAT_OW_#,256
    ADDSTRING Zu bearbeitende Datei: +FILENAME_ow_$
    LET LAUFWERK_OW_$=@LEFT$(FILENAME_ow_$,3)
    LET Fehler_ow_&=@OW_GetVolumeInformation(@ADDR(LAUFWERK_OW_$),Label_OW_#,256,0,0,LFlags_OW_#,DAT_OW_#,256)
    ADDSTRING Rückgabe von GetVolumeInformation=+@STR$(Fehler_OW_&)
    ADDSTRING Letzter API-Fehler=+@STR$(@OW_GetLastError())
    ADDSTRING Laufwerksflags=+@BIN$(@LONG(LFLAGS_OW_#,0))

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

        ADDSTRING Zugriff ist einschränkbar
        ADDSTRING Ausgelesene Partition=+@String$(Dat_OW_#,0)
        Declare ADDR_NEWSTATE_OW_&
        dim token_OW_#,4
        DIM NewState_OW_#,16
        DIM Luid_OW_#,8
        DIM Privileg_OW_#,33
        Clear NewState_OW_#
        Long NewState_OW_#,0=1 Nur ein Privileg soll geändert werden
        Long NewState_OW_#,12=$00000002 Das Privileg soll eingeschaltet werden
        Clear Privileg_OW_#
        Clear LUID_OW_#
        LET FEHLER_OW_&=@OW_OpenProcessToken(@OW_GetCurrentProcess(),$0020 | $0008,Token_OW_#)
        ADDSTRING Rückgabe von OpenProcessToken=+@STR$(Fehler_OW_&)
        ADDSTRING Letzter API-Fehler=+@STR$(@OW_GetLastError())
        STRING Privileg_OW_#,0=SeTakeOwnershipPrivilege
        LET Fehler_OW_&=@OW_LookupPrivilegeValue(@addr(System_OW_$),Privileg_OW_#,LUID_OW_#)
        ADDSTRING Rückgabe von LookupPrivilegeValue für SeTakeOwnershipPrivilege=+@STR$(Fehler_OW_&)
        ADDSTRING Letzter API-Fehler=+@STR$(@OW_GetLastError())
        LET ADDR_NEWSTATE_OW_&=NewState_OW_#
        LET ADDR_NEWSTATE_OW_&=ADDR_NEWSTATE_OW_&+4
        @OW_CopyMemory(ADDR_NEWSTATE_OW_&,Luid_OW_#,8)
        ADDSTRING Letzter API-Fehler nach CopyMemory=+@STR$(@OW_GetLastError())
        Let Fehler_OW_&=@OW_AdjustTokenPrivileges(@LONG(Token_OW_#,0),0,NewState_OW_#,0,0,0)
        ADDSTRING Rückgabe von AdjustTokenPrivileges=+@STR$(Fehler_OW_&)
        ADDSTRING Letzter API-Fehler=+@STR$(@OW_GetLastError())
        DIM Needed_ow_#,4
        Clear Needed_ow_#
        LET Fehler_ow_&=@OW_GetFileSecurity(@ADDR(FILENAME_ow_$),$1 | $2 | $4,0,0,Needed_ow_#)
        ADDSTRING Rückgabe von GetFileSecurity: +@STR$(Fehler_ow_&)
        ADDSTRING Letzter API-Fehler: +@STR$(@OW_GetLastError())
        LET NEEDED_ow_&=@LONG(Needed_ow_#,0)
        ADDSTRING Erforderliche Länge des Security Descriptor: +@STR$(NEEDED_ow_&)
        CASE NEEDED_ow_&=0 : LET NEEDED_ow_&=1024
        DIM PSECURITY_DESCRIPTOR_ow_#,NEEDED_ow_&
        Clear PSECURITY_DESCRIPTOR_ow_#
        @OW_SetLastError(0)
        LET Fehler_ow_&=@OW_GetFileSecurity(@ADDR(FILENAME_ow_$),$1 | $2 | $4,PSECURITY_DESCRIPTOR_ow_#,NEEDED_ow_&,Needed_ow_#)
        ADDSTRING Rückgabe von GetFileSecurity: +@STR$(Fehler_ow_&)
        ADDSTRING Letzter API-Fehler: +@STR$(@OW_GetLastError())
        LET Fehler_ow_&=@OW_IsValidSecurityDescriptor(PSECURITY_DESCRIPTOR_ow_#)
        ADDSTRING Rückgabe von IsValidSecurityDescriptor: +@STR$(Fehler_ow_&)
        ADDSTRING Letzter API-Fehler: +@STR$(@OW_GetLastError())
        DIM SID_ow_#,4
        DIM GFlag_ow_#,2
        Clear SID_ow_#
        Clear GFLAG_ow_#
        LET Fehler_ow_&=@OW_GetSecurityDescriptorOwner(PSECURITY_DESCRIPTOR_ow_#,SID_ow_#,GFLAG_ow_#)
        ADDSTRING Rückgabe von GetSecurityDescriptorOwner: +@STR$(Fehler_ow_&)
        ADDSTRING Letzter API-Fehler: +@STR$(@OW_GetLastError())
        LET Fehler_ow_&=@OW_IsValidSid(@long(SID_ow_#,0))
        ADDSTRING Rückgabe von IsValidSid für den Besitzer: +@STR$(Fehler_ow_&)
        ADDSTRING Letzter API-Fehler: +@STR$(@OW_GetLastError())
        DIM ACCOUNT_NAME_ow_#,256
        DIM SIZE_ACCOUNT_ow_#,4
        DIM Domain_ow_#,256
        DIM SIZE_DOMAIN_ow_#,4
        DIM SID_NAME_USE_ow_#,4
        Clear SID_NAME_USE_ow_#,System_ow_$
        Clear ACCOUNT_NAME_ow_#,Domain_ow_#
        LONG SIZE_ACCOUNT_ow_#,0=255
        LONG SIZE_DOMAIN_ow_#,0=255
        LET Fehler_ow_&=@OW_LookupAccountSid(@ADDR(System_ow_$),@Long(SID_ow_#,0),ACCOUNT_NAME_ow_#,SIZE_ACCOUNT_ow_#,Domain_ow_#,SIZE_DOMAIN_ow_#,SID_NAME_USE_ow_#)
        ADDSTRING Rückgabe von LookupAccountSid: +@STR$(Fehler_ow_&)
        ADDSTRING Letzter API-Fehler: +@STR$(@OW_GetLastError())
        ADDSTRING Reset des API-Fehlers wird durchgeführt
        @OW_SetLastError(0)
        LET OldOwner_OW_$=@String$(ACCOUNT_NAME_ow_#,0)
        ADDSTRING Besitzer der Datei: +@String$(ACCOUNT_NAME_ow_#,0)
        ADDSTRING Control Flag: +@STR$(@Word(GFLAG_ow_#,0))
        Dispose SID_ow_#
        DIM SID_OW_#,1
        Clear SID_OW_#,SIZE_ACCOUNT_OW_#,Domain_OW_#,SIZE_Domain_OW_#,SID_NAME_USE_OW_#
        LONG SIZE_ACCOUNT_OW_#,0=1
        LONG SIZE_Domain_OW_#,0=256
        LET FEHLER_OW_&=@OW_LookupAccountName(@ADDR(System_OW_$),@addr(OWNER_OW_$),SID_OW_#,SIZE_ACCOUNT_OW_#,Domain_OW_#,SIZE_Domain_OW_#,SID_NAME_USE_OW_#)
        ADDSTRING Rückgabe von LookupAccountName: +@STR$(Fehler_ow_&)
        ADDSTRING Letzter API-Fehler: +@STR$(@OW_GetLastError())
        Dispose SID_OW_#
        DIM SID_ow_#,@LONG(SIZE_ACCOUNT_OW_#,0)
        Clear SID_OW_#,Domain_OW_#,SIZE_Domain_OW_#,SID_NAME_USE_OW_#
        LONG SIZE_Domain_OW_#,0=256
        LET FEHLER_OW_&=@OW_LookupAccountName(@ADDR(System_OW_$),@addr(OWNER_OW_$),SID_OW_#,SIZE_ACCOUNT_OW_#,Domain_OW_#,SIZE_Domain_OW_#,SID_NAME_USE_OW_#)
        ADDSTRING Rückgabe von LookupAccountName: +@STR$(Fehler_ow_&)
        ADDSTRING Letzter API-Fehler: +@STR$(@OW_GetLastError())
        LET FEHLER_OW_&=@OW_InitializeSecurityDescriptor(PSECURITY_DESCRIPTOR_ow_#,$1)
        ADDSTRING Rückgabe von InitializeSecurityDescriptor: +@STR$(Fehler_ow_&)
        ADDSTRING Letzter API-Fehler: +@STR$(@OW_GetLastError())
        LET FEHLER_OW_&=@OW_SetSecurityDescriptorOwner(PSECURITY_DESCRIPTOR_ow_#,SID_OW_#,0)
        ADDSTRING Rückgabe von SetSecurityDescriptorOwner: +@STR$(Fehler_ow_&)
        ADDSTRING Letzter API-Fehler: +@STR$(@OW_GetLastError())
        LET FEHLER_OW_&=@OW_IsValidSecurityDescriptor(PSECURITY_DESCRIPTOR_ow_#)
        ADDSTRING Rückgabe von IsValidSecurityDescriptor für den geänderten Security Descriptor: +@STR$(Fehler_ow_&)
        ADDSTRING Letzter API-Fehler: +@STR$(@OW_GetLastError())
        LET FEHLER_OW_&=@OW_SetFileSecurity(@ADDR(Filename_OW_$),$1,PSECURITY_DESCRIPTOR_ow_#)
        ADDSTRING Rückgabe von SetFileSecurity: +@STR$(Fehler_ow_&)
        ADDSTRING Letzter API-Fehler: +@STR$(@OW_GetLastError())
        Dispose Luid_OW_#
        Dispose Privileg_OW_#
        Dispose NewState_OW_#
        Dispose token_OW_#
        Dispose SID_NAME_USE_ow_#
        Dispose ACCOUNT_NAME_ow_#
        Dispose Domain_ow_#
        Dispose SIZE_ACCOUNT_ow_#
        Dispose SIZE_DOMAIN_ow_#
        Dispose NEEDED_ow_#
        Dispose PSECURITY_DESCRIPTOR_ow_#
        Dispose SID_ow_#
        Dispose GFLAG_ow_#

    else

        ADDSTRING Zugriff ist nicht einschränkbar

    endif

    Dispose Label_OW_#
    Dispose LFlags_OW_#
    Dispose DAT_OW_#
    Return OldOwner_OW_$

endproc

SET_FILE_OWNER @loadfile$(Datei auswählen,*.*),Administratoren
@Rückgaben,1)
 
29.05.2005  
 



Zum Quelltext


Topictitle, max. 100 marque.
 

Systemprofile:

ne...aucune Systemprofil angelegt. [anlegen]

XProfan:

 Posting  Font  Smilies  ▼ 

s'il te plaît s'inscrire um une Beitrag trop verfassen.
 

Options du sujet

3.394 Views

Untitledvor 0 min.
p.specht09.07.2018
Klaus Ernst25.07.2014

Themeninformationen

cet Thema hat 1 participant:

unbekannt (1x)


Admins  |  AGB  |  Applications  |  Auteurs  |  Chat  |  protection des données  |  Télécharger  |  Entrance  |  Aider  |  Merchantportal  |  Empreinte  |  Mart  |  Interfaces  |  SDK  |  Services  |  Jeux  |  cherche  |  Support

un projet aller XProfaner, qui il y a!


Mon XProfan
Privé Nouvelles
Eigenes Ablageforum
Sujets-La liste de voeux
Eigene Posts
Eigene Sujets
Zwischenablage
Annuler
 Deutsch English Français Español Italia
Traductions

protection des données


Wir verwenden Cookies seulement comme Session-Cookies à cause de qui technischen Notwendigkeit et chez uns gibt es aucun Cookies de Drittanbietern.

si du ici sur unsere Webseite klickst ou bien navigierst, stimmst du unserer Erfassung de Informationen dans unseren Cookies sur XProfan.Net trop.

Weitere Informationen trop unseren Cookies et en supplément, comment du qui Kontrolle par-dessus behältst, findest du dans unserer nachfolgenden Datenschutzerklärung.


d'accordDatenschutzerklärung
je voudrais keinen Cookie