Wie kann ich den Reg_Binary Value HKLM Software Microsoft Ole DefaultLaunchPermission dekodieren, um zu sehen, welche Benutzer die Berechtigung haben?

StackOverflow https://stackoverflow.com/questions/775365

Frage

Ich versuche einen Weg zu finden, um den Reg_Binary -Wert für zu dekodieren "HKLM Software Microsoft Ole DefaultLaunchPermission"Um zu sehen, welche Benutzer standardmäßig Berechtigungen haben und wenn möglich eine Methode, bei der ich auch andere Benutzer nach ihrem Benutzernamen anhängen kann.

Bei der Arbeit nutzen wir DCOM und zum größten Teil immer die gleiche Benutzern Erlaubnis, aber in einigen Fällen sind wir gezwungen, unsere Kunden aufzunehmen und benutzerdefinierte Benutzer/Gruppen hinzuzufügen, um ihren Anforderungen zu entsprechen. Leider sind die benutzerdefinierten Benutzer, die wir hinzufügen müssen, zufällige Benutzernamen, daher kann ich nicht nur alle Benutzer hinzufügen und den Wert aus dem Schlüssel kopieren, wie ich es bei den Standardnutzern getan habe, die wir 95% der Zeit verwenden.

Ich arbeite derzeit an einer ausführbaren Befehlszeilenanwendung, in der ich einen Befehl zur Festlegung von Berechtigungen für vordefinierte Benutzer habe. Ich möchte jedoch auch eine Option zum Anhängen eines benutzerdefinierten Benutzer Zusammen mit unserer vordefinierten Standardbenutzerliste.

Um die Standardbenutzerliste mit meiner Anwendung festzulegen, würde ich derzeit nur eingeben:

Mytool.exe Richtlinien

Aber ich möchte es ein bisschen ausführlicher machen können, näher an den Befehl net näher für Windows -Benutzer, so etwas wie:

Mytool.exe Richtlinien /Hinzufügen: "MyCustomusername"

Das Problem ist, dass die im Reg_Binary -Wert gespeicherten Daten nicht leicht dekodiert zu sein scheinen. Ich konnte den Hex -Teil in Python dekodieren, aber ich habe eine Art binäre Daten, die ich nicht mit der Ahnung habe, was ich anfangen soll, da ich nicht einmal weiß, welche Art von Codierung überhaupt verwendet wurde Wissen Sie, was Sie verwenden sollen, um es zu dekodieren. :P

Ich habe einiges an Googeln gemacht, aber ich denke, mein Mangel an Verständnis der Terminologie um dieses Thema hat mich wahrscheinlich dazu veranlasst, die Antwort zu übersehen, ohne sie für das zu erkennen, was es ist.

Ich denke, meine erste wirkliche Frage müsste sein, welche Art von Codierung für den oben genannten Schlüssel verwendet wird, nachdem es aus Hex dekodiert wurde?

Oder noch besser, ist es überhaupt möglich, den Wert des Schlüssels programmgesteuert zu erhalten/zu ändern, damit ich eine Liste der derzeit festgelegten Benutzer erhalten und gegebenenfalls zusätzliche Benutzer/Gruppen anhängen?

Ich würde es vorziehen, diese Anwendung nach Möglichkeit ausschließlich in Python (oder WMI/WMIC) in Python zu halten. Bei Bedarf kann ich jedoch versuchen, andere Arten von Code in meine Python -Anwendung zu implementieren, wenn dies bedeutet, dass der Job endlich erledigt wird! Ich denke, es wäre auch nützlich zu erwähnen, dass diese Anwendung in erster Linie unter Windows XP Professional- und den meisten Windows -Serverversionen verwendet wird. Ich mache mir also keine Sorgen, wenn eine mögliche Lösung nicht mit früheren Windows -Betriebssystemversionen kompatibel ist.

Jede Unterstützung, Code oder nur eine einfache Hilfe beim Vertrauen mit diesem Thema wäre SEHR hochgeschätzt!

Vielen Dank im Voraus für jede Hilfe, die Sie anbieten können !! :D

War es hilfreich?

Lösung

Nun, Reg_Binary ist kein bestimmtes Format, es ist nur eine Möglichkeit, der Registrierung mitzuteilen, dass die Daten ein benutzerdefiniertes binäres Format sind. Sie haben also Recht, herauszufinden, was dort drin ist.

Was meinst du mit dem Konvertieren der Daten aus Hex? Packen Sie es aus? Ich bezweifle, dass Sie es richtig interpretieren, bis Sie wissen, was dort in erster Linie gespeichert wurde.

Sobald Sie herausgefunden haben, was sich in diesem Registrierungsbereich befindet, wird das Strukturmodul von Python Ihr bester Freund sein.

http://docs.python.org/library/struct.html

Weitere Lektüre (Sie haben diese wahrscheinlich schon gesehen)

Andere Tipps

Wir haben uns bei der Installation eines COM -Servers, der von unserem .NET -Dienst gehostet wurde, auf ähnliche Probleme gestoßen, dh wir wollten die COM -ACLs in unserer Installationslogik programmatisch verändern. Ich denke, Sie werden feststellen, dass es sich nur um ein binäres ACL -Format handelt, das Sie mit der Klasse in .NET manipulieren können:

System.security.accesscontrol.CommonSecurityDescriptor

Tut mir leid, dass ich Ihnen nicht helfen kann, eine Python -Lösung zu erhalten, aber wenn Ihr Rücken an der Wand ist und Sie .NET verwalten können, würde ein Beispielcode so aussehen:

int launchMask = (int) (COM_RIGHTS.EXECUTE | COM_RIGHTS.EXECUTE_LOCAL | COM_RIGHTS.ACTIVATE_LOCAL);

SecurityIdentifier sidAdmins = new SecurityIdentifier(WellKnownSidType.BuiltinAdministratorsSid, null);
SecurityIdentifier sidInteractive = new SecurityIdentifier(WellKnownSidType.InteractiveSid, null);

DiscretionaryAcl launchAcl = new DiscretionaryAcl(false, false, 3);
launchAcl.AddAccess(AccessControlType.Allow, sidAdmins, launchMask, InheritanceFlags.None, PropagationFlags.None);
launchAcl.AddAccess(AccessControlType.Allow, sidInteractive, launchMask, InheritanceFlags.None, PropagationFlags.None);

CommonSecurityDescriptor launchSD = new CommonSecurityDescriptor(false,
                                                                    false,
                                                                    ControlFlags.DiscretionaryAclPresent | ControlFlags.SelfRelative,
                                                                    sidAdmins,
                                                                    sidAdmins,
                                                                    null,
                                                                    launchAcl);


byte[] launchPermission = new byte[launchSD.BinaryLength];
launchSD.GetBinaryForm(launchPermission, 0);

Anschließend nehmen Sie das Byte -Array des Start -Erlaubniss an und schreiben es in die Registrierung. Wenn .NET ein Nichtstarter ist, können Sie sich zumindest ansehen, wie die .NET-Klassen funktionieren, und sehen Sie, welche Win32-Funktionen sie verwenden. Sie können entweder die verwenden Reflektor Werkzeug, um die entsprechende Baugruppe oder MSFT zu betrachten Veröffentlichen Sie die .NET -Quelle.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top