| |
|
|
|
Descripción:
LsaOpenPolicy öffnet el Handle des Policy Objektes en el lokalen Sistema o una Hintergrundcomputer. Das Policy Objeto Handle es quasi „der goldene Schlüssel“ a Sicherheitseinstellungen el en LSA-API getätigt voluntad puede. Diese Función hay sólo bajo NT-basierten Windowssystemen.
Deklaration:
DEF @LsaOpenPolicy(4) !advapi32,LsaOpenPolicy
Parámetro:
1.Parámetro: Struktur oder 8 Byte Große Bereichsvariable, el Angaben encima el Zielsystem enthält, dessen Policy Objeto Handle geöffnet voluntad se. => -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 des Zielsystems enthält. 2.Parámetro: Struktur oder 28 Byte Große Bereichsvariable para el Angabe de Verbindungsattributen. Dieser Parámetro se a Tiempo no genutzt. Alle Bytes el Struktur oder el Bereichsvariablen necesario deshalb en 0 gesetzt voluntad. 3.Parámetro: Flags, el el deseado Zugriff el Handle angeben. Flags puede con | addiert voluntad. Si el Zielsystem el aufrufenden Prozess no todos Zugriffsrechte gewährt, schlägt el Función fehlt. Man debería se deshalb genau überlegen, welche Zugriffsrechte genau para el Aktion nötig son, para el al Handle benötigt. => #Generic Zugriffsrechte#: -$80000000 = Lesezugriff (GENERIC_READ). -$40000000 = Schreibzugriff (GENERIC_WRITE). -$20000000 = Recht para Ausführen (GENERIC_EXECUTE). -$10000000 = Recht para Ausführen, Schreibzugriff y Lesezugriff (GENERIC_ALL). #Standard Zugriffsrechte#: -$01000000 = Um Zugriff en el SACL a obtener (ACCESS_SYSTEM_SECURITY). -$00020000 = Um Lesezugriff en el Security Descriptor (sin el SACL) a obtener (READ_CONTROL = STANDARD_RIGHTS_READ = STANDARD_RIGHTS_WRITE = STANDARD_RIGHTS_EXECUTE). -$00010000 = Recht para löschen (_DELETE). -$00040000 = Escribir derecho en el ACL (WRITE_DAC). -$00080000 = Escribir derecho en el Eigentümer (WRITE_OWNER). -$00100000 = Erlaubt una Prozess el Objeto a warten (SYNCHRONIZE). Gibt no para todos Objekttypen. -$000F0000 = $00010000+$00020000+$00080000+$00040000 (STANDARD_RIGHTS_REQUIRED). -$001F0000 = $00010000+$00020000+$00100000+$00080000+$00040000 (STANDARD_RIGHTS_ALL). #Spezifische Zugriffsrechte#: -$0001 = (POLICY_VIEW_LOCAL_INFORMATION). -$0002 = (POLICY_VIEW_AUDIT_INFORMATION) -$0004 = (POLICY_GET_PRIVATE_INFORMATION). -$0008 = (POLICY_TRUST_ADMIN). -$0010 = (POLICY_CREATE_ACCOUNT). -$0020 = (POLICY_CREATE_SECRET). -$0040 = (POLICY_CREATE_PRIVILEGE). -$0080 = (POLICY_SET_DEFAULT_QUOTA_LIMITS). -$0100 = (POLICY_SET_AUDIT_REQUIREMENTS). -$0200 = (POLICY_AUDIT_LOG_ADMIN). -$0400 = (POLICY_SERVER_ADMIN). -$0800 = (POLICY_LOOKUP_NAMES). -$FFFF = Alle spezifischen Rechte (SPECIFIC_RIGHTS_ALL).
-$02000000 = Alle erlaubten Zugriffsrechte para el anfragenden Prozess (MAXIMUM_ALLOWED). 4.Parámetro: 4 Byte große Bereichsvariable, el el Handle des Poolicy Objektes aufnimmt.
Rückgabewert:
0 en Erfolg, ansonsten una NT-Status Fehlercode (LongInt), el con LsaNtStatusToWinError en una Systemfehlercode umgewandelt voluntad kann.
Beispiele:
KompilierenMarcaSeparaciónDEF @LsaOpenPolicy(4) !"advapi32","LsaOpenPolicy"
DEF @LsaClose(1) !"advapi32","LsaClose"
DEF @LsaNtStatusToWinError(1) !"advapi32","LsaNtStatusToWinError"
Declare Fehler&,UNICODE#,Attribut#,POLICY_Handle#
Declare Policy_Handle&
Struct LSA_UNICODE_STRING=Length%,MaximumLength%,Buffer&
DIM UNICODE#,LSA_UNICODE_STRING
Clear UNICODE#
Struct LSA_OBJECT_ATTRIBUTES=Length&,RootDirectory&,Length%,MaximumLength%,Buffer&,Attributes&,SecurityDescriptor#(4),SecurityQualityOfService#(4)
DIM Attribut#,LSA_OBJECT_ATTRIBUTES
Clear Attribut#
Dim POLICY_Handle#,4
Windowstyle 31
Windowtitle "Policyobjekthandle"
Window 0,0-640,440
LET Fehler&=@LsaOpenPolicy(0,Attribut#,16 | 2048,POLICY_Handle#)
Print "Rückmeldung von LsaOpenPolicy="+@STR$(Fehler&)
Let Fehler&=@LsaNtStatusToWinError(Fehler&)
PRINT "LsaOpenPolicy Rückmeldung umgewandelt in Windows Fehlercode="+@STR$(Fehler&)
LET Policy_Handle&=@LONG(POLICY_Handle#,0)
Print "Geliefertes Handle="+@STR$(Policy_Handle&)
LET Fehler&=@LsaClose(Policy_Handle&,0)
Print "Rückmeldung von LsaClose="+@STR$(Fehler&)
Let Fehler&=@LsaNtStatusToWinError(Fehler&)
PRINT "LsaClose Rückmeldung umgewandelt in Windows Fehlercode="+@STR$(Fehler&)
While 0=0
Waitinput
Wend
|
|
|
| |
|
|