Español
Fuente/ Codesnippets

Expediente Eigentümer ändern

 
¡Hola Profaner...

Ein Eigentümer uno Expediente kann sólo voluntad:
- Der User, el por el Token des aufrufenden Prozesses personifiziert se.
- Un Gruppe, el en el Token des aufrufenden Prozesses con el Flag SE_GROUP_OWNER gekennzeichnet es (siehe API GetTokenInformation).

Um una otro User una Eigentum a klauen...
- muß el Token des aufrufenden Prozesses el Privileg SeTakeOwnershipPrivilege enthalten. Nach el Hinzufügen es una Reboot erforderlich!
- muß en el Token des aufrufenden Prozesses el Privileg SeTakeOwnershipPrivilege aktiviert voluntad!
KompilierenMarcaSeparación
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


Título del Tema, max. 100 Signo.
 

Systemprofile:

Kein Systemprofil creado. [anlegen]

XProfan:

 Contribución  Font  Smilies  ▼ 

Bitte registro en una Contribución a verfassen.
 

Tema opciones

3.391 Views

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

Themeninformationen

Dieses Thema ha 1 subscriber:

unbekannt (1x)


Admins  |  AGB  |  Applications  |  Autores  |  Chat  |  Política de Privacidad  |  Descargar  |  Entrance  |  Ayuda  |  Merchantportal  |  Pie de imprenta  |  Mart  |  Interfaces  |  SDK  |  Services  |  Juegos  |  Búsqueda  |  Support

Ein Projekt aller XProfan, el lo son!


Mi XProfan
Privado Noticias
Eigenes Ablageforum
Temas-Merkliste
Eigene Beiträge
Eigene Temas
Zwischenablage
Cancelar
 Deutsch English Français Español Italia
Traducciones

Política de Privacidad


Wir uso Cookies sólo como Session-Cookies wegen el technischen Notwendigkeit y en uns hay no Cookies de Drittanbietern.

Wenn du hier en unsere Webseite klickst oder navigierst, stimmst du unserer Erfassung de Informationen en unseren Cookies en XProfan.Net a.

Weitere Informationen a unseren Cookies y dazu, como du el Kontrolle darüber behältst, findest du en unserer nachfolgenden Datenschutzerklärung.


einverstandenDatenschutzerklärung
Yo möchte no Cookie