| |
|
|
|
Beschreibung:
LsaOpenPolicy ouvrez cela Handle des Policy Objektes sur dem lokalen System ou bien einem Hintergrundcomputer. cela Policy objet Handle ist quasi „der goldene Schlüssel“ le Sicherheitseinstellungen qui sur qui LSA-API getätigt volonté peut. cet Funktion gibt es seulement sous NT-basierten Windowssystemen.
Deklaration:
DEF @LsaOpenPolicy(4) !advapi32,LsaOpenPolicy
paramètre:
1.paramètre: Struktur ou bien 8 Byte grande Bereichsvariable, qui Angaben sur cela Zielsystem contient, dessen Policy objet Handle ouvert volonté soll. => -Byte 0-1 = qui longtemps des Cordes dans Bytes, sur den Byte 4-7 verweist. -Byte 2-3 = qui Longueur des Bereichs dans Bytes, sur den Byte 4-7 verweist. -Byte 4-7 = Beliebig, mais ausreichend grand Bereichsvariable avec einem String im Unicode Format, qui den Namen des Zielsystems contient. 2.paramètre: Struktur ou bien 28 Byte grande Bereichsvariable pour qui Angabe de Verbindungsattributen. cette paramètre wird zur Zeit pas genutzt. Alle Bytes qui Struktur ou bien qui Bereichsvariablen doit c'est pourquoi sur 0 gesetzt volonté. 3.paramètre: Flags, qui den gewünschten Zugriff sur cela Handle angeben. Flags peut avec | addiert volonté. si cela Zielsystem dem aufrufenden Prozess pas alle Zugriffsrechte gewährt, schlägt qui Funktion fehlt. on sollte sich c'est pourquoi oui c'est ca überlegen, quelle Zugriffsrechte oui c'est ca pour qui Aktion nötig sommes, pour qui on cela Handle nécessaire. => #Generic Zugriffsrechte#: -$80000000 = Lesezugriff (GENERIC_READ). -$40000000 = Schreibzugriff (GENERIC_WRITE). -$20000000 = droite zum Effectuer (GENERIC_EXECUTE). -$10000000 = droite zum Effectuer, Schreibzugriff et Lesezugriff (GENERIC_ALL). #Standard Zugriffsrechte#: -$01000000 = Um Zugriff sur qui SACL trop conservé (ACCESS_SYSTEM_SECURITY). -$00020000 = Um Lesezugriff sur den Security Descriptor (sans den SACL) trop conservé (READ_CONTROL = STANDARD_RIGHTS_READ = STANDARD_RIGHTS_WRITE = STANDARD_RIGHTS_EXECUTE). -$00010000 = droite zum effacer (_DELETE). -$00040000 = Donnez votre droit sur den ACL (WRITE_DAC). -$00080000 = Donnez votre droit sur den propriétaire (WRITE_OWNER). -$00100000 = Erlaubt einem Prozess sur cela objet trop attendre (SYNCHRONIZE). Gibt es pas pour alle 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 pour den anfragenden Prozess (MAXIMUM_ALLOWED). 4.paramètre: 4 Byte grand Bereichsvariable, qui cela Handle des Poolicy Objektes aufnimmt.
Rückgabewert:
0 chez Erfolg, ansonsten un NT-Status Fehlercode (LongInt), qui avec LsaNtStatusToWinError dans une Systemfehlercode umgewandelt volonté peux.
Beispiele:
KompilierenMarqueSéparationDEF @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
|
|
|
| |
|
|