| |
|
|
| Die API LsaOpenPolicy bietet die Grundlage für sehr interessante Möglichkeiten unter Profan im Adminbereich. Leider habe ich zu wenig Ahnung von der API und anderen Programmiersprachen und beiße mir an den Strukturen dieser Funktion im Augenblick die Zähne aus . Ich möchte die Funktion auf ein lokales System anwenden um an das Policy-Handle zu kommen, das man für andere APIs des Securitybereichs benötigt. Wer hat Lust, mir zur Seite zu stehen oder genug Ahnung, um mir weiter zu helfen? Habe Profan² 7.5... |
|
|
| |
|
|
|
| Gut das ich mich mit diesem Thema überhaupt nicht auskenne - gelobt sei mir da ein linux. *coolyeah*
Salve, iF |
|
|
| |
|
|
|
| Hallo IF...
Schade eigentlich. Der Adminsektor bietet für Profan wesentlich bessere und interessantere Möglichkeiten als es die Entwicklung von Spielen tut. Da lassen sich mit Profan auf sehr einfache und einleuchtende Weise extrem interessante und sehr nützliche Dinge zaubern.
Ich beschäftige mich leider est mit der API seit ich in den Profanforen poste - ich zähle mich deshalb eher zu den Anfängern. Für jemanden mit etwas mehr Erfahrung dürfte die 4-Parameterfunktion kein großes Problem darstellen - es geht ja eigentlich nur darum, ein Handle zu bekommen. Ich stolpere im Augenblick etwas über den ersten und zweiten Parameter (Ich glaube Unicode_String heißt das Untier, das mich plagt!?) => eigentlich fast leere Strukturen - doch wie groß? Was kann man da genau alles auf Null setzen??? |
|
|
| |
|
|
|
| Zeig doch einfach mal her - wenns dirnur darum geht kann ich sicherlich helfen. |
|
|
| |
|
|
|
| Hallo IF...
Denke auch mal, daß du da helfen kannst. Nachdem ich noch einen Hinweis im Netz auf einer C++ Seite gefunden habe, erhalte ich jetzt unter Windows2000 auch eine Zahl als Rückgabe. Aber, frei nach Hamlett, hab ich das Handle oder hab ich es nicht, das ist hier die Frage... KompilierenMarkierenSeparierenDEF @LsaOpenPolicy(4) !"advapi32","LsaOpenPolicy"
DEF @LsaClose(1) !"advapi32","LsaClose"
Declare POLICY_Handle#,Attribut#,Policy_Handle&,UNICODE#
Declare Ergebnis&
DIM POLICY_Handle#,4
DIM Attribut#,(4+4+5+1+1)
DIM UNICODE#,5
CLS
Long Attribut#,0=15
Word Attribut#,8=1
Word Attribut#,10=1
WORD Unicode#,0=1
WORD Unicode#,2=1
STRING Unicode#,4=""
LET ERGEBNIS&=@LsaOpenPolicy(Unicode#,Attribut#,$80000000 | $20000000 | 16 | 2048,POLICY_Handle#)
LET Policy_Handle&=@LONG(POLICY_Handle#,0)
PRINT Policy_Handle&
LET ERGEBNIS&=@LsaClose(@long(POLICY_Handle#,0))
WAITINPUT
Dispose Attribut#
Dispose Unicode#
Dispose POLICY_Handle#
|
|
|
| |
|
|
|
Michael Dell | Hab mal folgendes aus der MSDN zusammengestellt, hoffe es is korrekt denn Testen konnt ichs nich (da Win98).
Hoffe es hilft:[quote:cb47d68b17]Struct LSA_UNICODE_STRING = Length#(2),MaximumLength#(2),Buffer& vor XProfan = Length%,MaximumLength%,Buffer& Buffer = Pointer to a wide character string. Note that the strings returned by the various LSA functions might not be null terminated.
Struct LSA_OBJECT_ATTRIBUTES = Length&,RootDirectory&,ObjectName&,Attributes&,SecurityDescriptor#(1),SecurityQualityOfService#(1) ObjectName& = PLSA_UNICODE_STRING (=LSA_UNICODE_STRING)
LsaOpenPolicy- Struktur Start Struct LsaOpenPolicy = PLSA_UNICODE_STRING&,PLSA_OBJECT_ATTRIBUTES&,DesiredAccess#(2),PolicyHandle& PLSA_UNICODE_STRING& = LSA_UNICODE_STRING&, PLSA_OBJECT_ATTRIBUTES& = LSA_OBJECT_ATTRIBUTES&
Parameters:
SystemName Pointer to an LSA_UNICODE_STRING structure that contains the name of the target system. The name can have the form computer_name or \computer_name. If this parameter is NULL, the function opens the Policy object on the local system.
ObjectAttributes Pointer to an LSA_OBJECT_ATTRIBUTES structure that specifies the connection attributes. The structure members are not used; initialize them to NULL or zero.
DesiredAccess An ACCESS_MASK that specifies the requested access rights. The function fails if the DACL of the target system does not allow the caller the requested access. To determine the access rights that you need, see the documentation for the LSA functions with which you want to use the policy handle.
PolicyHandle [in, out] Pointer to an LSA_HANDLE variable that receives a handle to the Policy object. When you no longer need this handle, pass it to the LsaClose function to close it.
Return Values If the function succeeds, the function returns STATUS_SUCCESS. If the function fails, it returns an NTSTATUS code. For more information, see LSA Policy Function Return Values. You can use the LsaNtStatusToWinError function to convert the NTSTATUS code to a Windows error code.
Remarks To administer the local security policy of a local or remote system, you must call the LsaOpenPolicy function to establish a session with that systems LSA subsystem. LsaOpenPolicy connects to the LSA of the target system and returns a handle to the Policy object of that system. You can use this handle in subsequent LSA function calls to administer the local security policy information of the target system. LsaOpenPolicy- Struktur Ende
ACCESS_MASK ( =DesiredAccess#(2) )
Bits Meaning 0 through 15 Specific rights. Contains the access mask specific to the object type associated with the mask. 16 through 23 Standard rights. Contains the objects standard access rights.
24 Access system security (ACCESS_SYSTEM_SECURITY). It is used to indicate access to a system access control list (SACL). This type of access requires the calling process to have the SE_SECURITY_NAME (Manage auditing and security log) privilege. If this flag is set in the access mask of an audit access ACE (successful or unsuccessful access), the SACL access will be audited. 25 Maximum allowed (MAXIMUM_ALLOWED). 26 through 27 Reserved. 28 Generic all (GENERIC_ALL). 29 Generic execute (GENERIC_EXECUTE). 30 Generic write (GENERIC_WRITE). 31 Generic read (GENERIC_READ).
Standard rights bits, 16 to 23, contain the objects standard access rights and can be a combination of the following predefined flags.
Bit Flag Meaning 16 DELETE Delete access. 17 READ_CONTROL Read access to the owner, group, and discretionary access control list (DACL) of the security descriptor. 18 WRITE_DAC Write access to the DACL. 19 WRITE_OWNER Write access to owner. 20 SYNCHRONIZE Synchronize access.
The following constants represent the specific and standard access rights:
#define SPECIFIC_RIGHTS_ALL 0x0000FFFF #define STANDARD_RIGHTS_REQUIRED 0x000F0000 #define STANDARD_RIGHTS_ALL 0x001F0000[/quote:cb47d68b17] Gruß... |
|
|
| Salu Michael...
Hab zwar krumme Fieß awer dofir e' ecklich Gsicht! | 14.12.2004 ▲ |
|
|
|
|
| Hallo Michael...
DANKE! Werds so schnell wie möglich testen und mit meinen Sachen abgleichen!! |
|
|
| |
|
|
|
| Hallo Michael...
JA!!!! DAS WARS!!! ICH HAB DAS HANDLE!!!!! Es flutsch, es funktioniert, ES KLAPPT ES GEHT!!!!!!! Da habe ich so viel Bahnhof verstanden, daß ich da erst nächstes Jahr durchgefunden hätte! ICH KANN DIR GAR NICHT SAGEN WIE ICH MICH FREUE! Ist das schön, jetzt komme ich weiter...
|
|
|
| |
|
|
|
| Ja warum fragst Du mich denn dann nicht gleich.
Salve, iF :biggrin: |
|
|
| |
|
|
|
Michael Dell | Prima, es geht doch nix über nen gelungenen Abend!
Hab grad noch mal in der MSDN nachgesehn und entdeckt das ich da vieleicht was falsch übersetzt haben könnte.
Die beiden Variablen SecurityDescriptor#(1) & SecurityQualityOfService#(1) in der Struktur LSA_OBJECT_ATTRIBUTES werden als PVOID beschrieben also als Pointer, sollte mal was nicht funzen versucht mal diese beiden Variablen als #(2) oder #(4) zu Deklarieren.
Gruß... |
|
|
| Salu Michael...
Hab zwar krumme Fieß awer dofir e' ecklich Gsicht! | 14.12.2004 ▲ |
|
|
|
|
| Hallo Michael...
Bis auf die ACCESS_MASK hat alles hingehauen, werds aber trotzdem mal mit dem Pointer versuchen. Habe jetzt die übersetzte Rückmeldung ERROR_SUCCESS statt Fehler 998. Dieses Handle ist quasi der goldene Schlüssel zu den Sicherheitseinstellungen von Windows2000/XP! Ich kann nun reinsehen, umordnen und was rausnehmen - nochmals besten Dank! |
|
|
| |
|
|