Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi ActiveX-DLL zum Zugriff auf die Registry unter Vista/W7 (https://www.delphipraxis.net/144982-activex-dll-zum-zugriff-auf-die-registry-unter-vista-w7.html)

Sourcemaker 21. Dez 2009 11:01


ActiveX-DLL zum Zugriff auf die Registry unter Vista/W7
 
Hi,

ich beziehe mich auf Windows Vista/7 Adminrechte für Anfänger.

Wie in diesem Beitrag beschrieben muß ich auf die Registry HKEY_LOCAL_MACHINE zugreifen.
Bei eingeschalteter Benutzerkontensteuerung ist das nicht ohne weiteres möglich.

Ich habe letzte Woche leider ergebnislos versucht eine entsprechende ActiveX-Library zu erstellen.
Gescheitert bin ich schon beim Erstellen der Library.

Hat jemand dieses erfolgreich getan und kann ein entsprechendes Beispiel ggf. konkrete Anleitung posten (Delphi 2007) ?

Danke im voraus

Frank

Luckie 21. Dez 2009 11:14

Re: ActiveX-DLL zum Zugriff auf die Registry unter Vista/W7
 
Sollte man per ActiveX mit eingeschränkten Rechten Zugriff auf geschützte Ressourcen bekommen, würde ich das für eine eklatante Sicherheitslücke halten. Deswegen gehe ich davon aus, dass dies nicht möglich ist. Warum sollte auch ein Benutzer in HKLM schreiben dürfen/wollen?

Sourcemaker 21. Dez 2009 11:25

Re: ActiveX-DLL zum Zugriff auf die Registry unter Vista/W7
 
Um z.B. auf den Netzwerk liegende Hilfedateien (CHM) zu registrieren.
Außerdem werden ja wie in dem Beispiel beschrieben durchaus Berechtigungen abgefragt.

Gruß

Frank

Luckie 21. Dez 2009 11:29

Re: ActiveX-DLL zum Zugriff auf die Registry unter Vista/W7
 
Und der COM-Server muss von einem Administrator registriert werden, dann kann er auch gleich die Hilfedateien registrieren. Warum also der Umweg?

Sourcemaker 21. Dez 2009 12:02

Re: ActiveX-DLL zum Zugriff auf die Registry unter Vista/W7
 
Die DLL einmalig als Admin zu registrieren ist momentan nicht das Problem sondern die DLL zu
erstellen.

Luckie 21. Dez 2009 12:04

Re: ActiveX-DLL zum Zugriff auf die Registry unter Vista/W7
 
Guck mal hier: http://www.michael-puff.de/index.php...lphi/Tutorials

Aber noch mal die Frage, warum der Umweg?

Sourcemaker 22. Dez 2009 10:43

Re: ActiveX-DLL zum Zugriff auf die Registry unter Vista/W7
 
Danke Luckie,

das hat mir in Bezug auf die grundsätzliche ActiveX-Implementierung weitergeholfen.

Allerdings hänge ich bei Deklaration der Methode/Funktion:

Delphi-Quellcode:
function NewCoGetObject(pazName: PWideChar; pBindOptions: PBindOpts3;
         const iid: TIID; out ppv): HResult; stdcall; external 'ole32.dll'
         name 'CoGetObject';

function CoCreateInstanceAsAdmin(WndHandle: HWND; clsid: TCLSID;
    iid: TIID; out ppv): HRESULT;
var
    Bo     : TBindOpts3;
    Moniker : PWideChar;
begin
    Moniker := PWideChar(WideString('Elevation:Administrator!new:' +
                                    GuidToString(clsid)));
    FillChar(Bo, SizeOf(Bo), #0);
    Bo.hwnd          := WndHandle;
    Bo.cbStruct      := SizeOf(Bo);
    Bo.dwClassContext := CLSCTX_LOCAL_SERVER;
    Result           := NewCoGetObject(Moniker, @Bo, iid, ppv);
end;
Ich muß CoCreateInstanceAsAdmin in der Typ-Bibliothek angeben finde aber nicht die richtigen Parametertypen am wenigsten für "out ppv".

Eine Idee ?

Gruß

Frank

Ralf Kaiser 22. Dez 2009 10:52

Re: ActiveX-DLL zum Zugriff auf die Registry unter Vista/W7
 
Zitat:

Zitat von Sourcemaker
Ich muß CoCreateInstanceAsAdmin in der Typ-Bibliothek angeben finde aber nicht die richtigen Parametertypen am wenigsten für "out ppv".

Eine Idee ?

Warum musst du diese Funktion in der Typenbibliothek angeben???

Diese Funktion wird benötigt um deinen COM-Server im Clientprogramm zur Laufzeit zu instanziieren zu instantiieren zu erstellen. Der COM Client erstellt damit also eine Instanz deines COM Servers.

Sourcemaker 22. Dez 2009 10:56

Re: ActiveX-DLL zum Zugriff auf die Registry unter Vista/W7
 
Danke,

anscheinend habe ich das komplett falsch verstanden, werde es gleichmal probieren.

Gruß

Frank

Sourcemaker 23. Dez 2009 11:08

Re: ActiveX-DLL zum Zugriff auf die Registry unter Vista/W7
 
Hi,

für alle Suchenden hier ein paar nützliche Links.

Komplette Elevation-Demo mit Source

PDF mit Anweisungen was bei Vista/W7 zu beachten ist

Frohe Weihnachten

Frank


Alle Zeitangaben in WEZ +1. Es ist jetzt 20:31 Uhr.

Powered by vBulletin® Copyright ©2000 - 2021, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2021 by Daniel R. Wolf