|
Descripción:
El API LsaRemoveAccountRights lejos de una Account Privilegien, sofern lo hier no en Gruppenprivilegien es. Diese Función hay sólo bajo NT-basierten Windowssystemen. Privilegien voluntad sólo después de el erneuten Einloggen des speziellen Users de el Account lejos.
Deklaration:
DEF @LsaRemoveAccountRights(5) !advapi32,LsaRemoveAccountRights
Parámetro:
1.Parámetro: Con el LSAOpenPolicy erhaltene Handle des Policy Objektes como Longint. Das Handle muß con POLICY_LOOKUP_NAMES geöffnet voluntad. 2.Parámetro: Bereichsvariable con el SID des Accounts, de el el Privilegien lejos voluntad debería. 3.Parámetro: Flag el angibt, si todos Privilegien lejos werdcen debería. => ·1 = Alle Privilegien voluntad lejos. ·0 = Nur el en Parámetro 4 angegebenen Privilegien voluntad lejos. 4.Parámetro: Bereichvariable con un Array de LSA_UNICODE_STRING Estructuras, el Angaben en a entfernenden Privilegien enthält. => ·Byte 0-1 = El Lange des Cuerdas en Bytes, en el Byte 4-7 verweist. ·Byte 2-3 = El Longitud des Bereichs en Bytes, en el Byte 4-7 verweist. ·Byte 4-7 = Beliebig, aber ausreichend große Bereichsvariable con un String en el Unicode Formato, el el Namen uno hinzuzufügenden Privilegs enthält. ·Byte 8-9 = El Lange des Cuerdas en Bytes, en el Byte 12-15 verweist. ·Byte 10-11 = El Longitud des Bereichs en Bytes, en el Byte 12-15 verweist. ·Byte 12-15 = Beliebig, aber ausreichend große Bereichsvariable con un String en el Unicode Formato, el el Namen uno hinzuzufügenden Privilegs enthält. ·usw... 5.Parámetro: El Anzahl el a entfernenden Privilegien de Parámetro 4.
Rückgabewert:
0 en Erfolg, ansonsten una NT-Status Fehlercode (LongInt), el con LsaNtStatusToWinError en una Systemfehlercode umgewandelt voluntad kann.
Beispiele:
DEF @LsaOpenPolicy(4) !"advapi32","LsaOpenPolicy"
DEF @LsaClose(1) !"advapi32","LsaClose"
DEF @LsaNtStatusToWinError(1) !"advapi32","LsaNtStatusToWinError"
DEF @LsaRemoveAccountRights(5) !"advapi32","LsaRemoveAccountRights"
DEF @MultiByteToWideChar(6) !"kernel32","MultiByteToWideChar"
DEF @LookupAccountName(7) !"advapi32","LookupAccountNameA"
DEF @GetACP(0) !"kernel32","GetACP"
Declarar Fehler&,UNICODE#,Attribut#,POLICY_Handle#
Declarar Policy_Handle&,PrivilegSET#,PRIVILEG#
Declarar SID#,DOMAIN#,SID_TYPE_INDICATOR#,DOMAIN#,Attribut#,ALLPRIVS#,COUNT#,SID#,DOMAINNAME_SIZE_ADDR#
Declarar SYSTEM$,DOMAIN$,SID_Size#,Account$
Struct LSA_UNICODE_STRING=Length%,MaximumLength%,Buffer&
DIM UNICODE#,LSA_UNICODE_STRING
Claro UNICODE#
Struct LSA_OBJECT_ATTRIBUTES=Length&,RootDirectory&,Length%,MaximumLength%,Buffer&,Attributes&,SecurityDescriptor#(4),SecurityQualityOfService#(4)
DIM Attribut#,LSA_OBJECT_ATTRIBUTES
Claro Attribut#
DIM ALLPRIVS#,2000
DIM COUNT#,4
DIM DOMAIN#,256
DIM SID#,800
DIM SID_Size#,4
DIM DOMAINNAME_SIZE_ADDR#,4
DIM SID_TYPE_INDICATOR#,256
DIM POLICY_Handle#,4
DIM PRIVILEG#,100
DIM PrivilegSET#,100
Windowstyle 31
Windowtitle "Aus una Account el Privileg para Cambio el Systemzeit entfernen."
Ventana 0,0-640,440
CLEAR SID#,DOMAIN#,SID_TYPE_INDICATOR#,DOMAIN#,Attribut#,ALLPRIVS#,COUNT#,SID#,DOMAINNAME_SIZE_ADDR#
Largo SID_Size#,0=800
LONG DOMAINNAME_SIZE_ADDR#,0=255
LET SYSTEM$=""
LET ACCOUNT$=@input$("Accountnamen eingeben (kein Alias):","Account","Gast")
LET Fehler&=@LookupAccountName(@ADDR(Sistema$),@addr(ACCOUNT$),SID#,SID_Size#,DOMAIN#,DOMAINNAME_SIZE_ADDR#,SID_TYPE_INDICATOR#)
Imprimir "Rückmeldung de LookupAccountName="+@STR$(Fehler&)
If Fehler&=1
LET Fehler&=@LsaOpenPolicy(0,Attribut#,$10 | $0800,POLICY_Handle#)
Imprimir "Rückmeldung de LsaOpenPolicy="+@STR$(Fehler&)
Let Fehler&=@LsaNtStatusToWinError(Fehler&)
PRINT "LsaOpenPolicy Rückmeldung umgewandelt en Windows Fehlercode="+@STR$(Fehler&)
LET Policy_Handle&=@LONG(POLICY_Handle#,0)
Imprimir "Geliefertes Handle="+@STR$(Policy_Handle&)
IF Fehler&=0
CLEAR UNICODE#,PrivilegSET#,PRIVILEG#
STRING PrivilegSET#,0="SeSystemtimePrivilege"
LET Fehler&=@MultiByteToWideChar(@GetACP(),0,PRIVILEGSET#,-1,PRIVILEG#,100)
Imprimir "Rückmeldung de MultiByteToWideChar="+@STR$(Fehler&)
UNICODE#.Buffer&=PRIVILEG#
UNICODE#.Length%=@LEN("SeSystemtimePrivilege")*2
UNICODE#.MaximumLength%=100
LET Fehler&=@LsaRemoveAccountRights(Policy_Handle&,SID#,0,UNICODE#,1)
Imprimir "Rückmeldung de LsaRemoveAccountRights="+@STR$(Fehler&)
Let Fehler&=@LsaNtStatusToWinError(Fehler&)
PRINT "LsaRemoveAccountRights Rückmeldung umgewandelt en Windows Fehlercode="+@STR$(Fehler&)
LET Fehler&=@LsaClose(Policy_Handle&,0)
Imprimir "Rückmeldung de LsaClose="+@STR$(Fehler&)
Let Fehler&=@LsaNtStatusToWinError(Fehler&)
PRINT "LsaClose Rückmeldung umgewandelt en Windows Fehlercode="+@STR$(Fehler&)
Endif
endif
Disponer POLICY_Handle#
Disponer ALLPRIVS#
Disponer COUNT#
Disponer DOMAIN#
Disponer SID#
Disponer SID_Size#
Disponer DOMAINNAME_SIZE_ADDR#
Disponer SID_TYPE_INDICATOR#
Disponer POLICY_Handle#
Disponer PRIVILEG#
Disponer PrivilegSET#
Mientras que 0=0
Waitinput
Wend
|
|