![]() |
ActiveX - Installierte Version feststellen.
Mit
![]() ![]() Nun würde ich gerne die Version des installierten ActiveX auslesen. Eine Funktion dafür habe ich aber nicht gefunden. Ich könnte natürlich die Registry durchsuchen. Wenn das ActiveX installiert ist, steht die Version in der Registry an folgenden stellen:
Code:
Die Schlüssel kann ich auslesen. Aber!!
HKEY_CLASSES_ROOT\Wow6432Node\CLSID\{68385E69-C276-4EC1-ACE0-2EA6C831B127}\Version
HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Wow6432Node\CLSID\{68385E69-C276-4EC1-ACE0-2EA6C831B127}\Version 1) Welchen von beiden Schlüsseln sollte ich nehmen? 2) Ist der Schlüssel für jeden Computer gleich. Das Stück "Wow6432Node" wirkt auf mich, daß dieser Schlüssel bei 64Bit-Windows anders ist als bei 32Bit-Windows. Gibt es in Delphi eine Funktion, welche mir den Standard-Key (für HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Wow6432Node\CL SID) zurück gibt? |
AW: ActiveX - Installierte Version feststellen.
zu 1:
Beide Schlüssel sind gleich. Das eine ist nur ein "Abkürzung" zu dem gleichen Registry-Zweig zu 2: Kann dir egal sein. Du nimmst den Wert für ein 32-Bit Windows. Windows sorgt automatisch dafür das für 64-Bit Windows deine Registry-Abfrage aus einer 32-Bit Anwendung korrekt umgebogen wird |
AW: ActiveX - Installierte Version feststellen.
Zitat:
HKEY_CLASSES_ROOT ist ein Merge, aus vorallem HKEY_LOCAL_MACHINE\SOFTWARE\Classes und HKEY_CURRENT_USER\Software\Classes , welches für den Benutzer zusammengemischt wird, in dessen Kontext das Programm gerade läuft. (standardmäßig also der des eingeloggten Benutzers) In HKEY_LOCAL_MACHINE\SOFTWARE\Classes findet man die globalem Dinge für alle Benutzer, welche für einzelne Benutzer erweitert oder überschieben werden können. Und HKEY_CURRENT_USER ist natürlich eine Weiterleitung zum entsprechenden Benutzerpfad in HKEY_USERS. Es gibt womöglich auch noch ein HKEY_CURRENT_USER\Software\Classes\Wow6432Node. Dich hat also vorallem nur HKEY_CLASSES_ROOT zu interessieren, wenn du die "aktuellen" Werte wissen willst. Und wie beim Dateisystem, gibt es auch in der Registry eine Virtualisierung, wo vorallem die Pfade der 32-Bit-Anwendungen im WOW64 umgeleidet werden können. Wenn man sich aber nur für Werte zu seinem System interessiert (also die eigene Bittigkeit entsprechend), dann muß man praktisch nichts beachten. Wenn dein Programm sich auch nicht als kompatibel zu der WindowsVersion ausgibt, dann kann es auch schnell mal in HKEY_CLASSES_ROOT\VirtualStore landen. :stupid: |
AW: ActiveX - Installierte Version feststellen.
Danke euch beiden. Jetzt bin ich schlauer. Klappt hervoragend.
|
AW: ActiveX - Installierte Version feststellen.
Zitat:
|
AW: ActiveX - Installierte Version feststellen.
Registry auslesen ist doch Pfui
Delphi-Quellcode:
function CoClassExists(const ClassID:TGuid):Boolean;
var hr : HRESULT; progid : PWideChar; begin hr := ProgIDFromCLSID(ClassID, progid); Result := Succeeded(hr); end; const myclass:TGUID = '{68385E69-C276-4EC1-ACE0-2EA6C831B127}'; begin if not CoClassExists(myclass) then // ActiveX Klasse ist nicht installiert |
AW: ActiveX - Installierte Version feststellen.
Zitat:
Wie kann ich den Boolean in den korrekten Versionsstring wandeln? |
AW: ActiveX - Installierte Version feststellen.
Hab die Frage nur ungenau überflogen :-[
Wenn man das Interface ITypeLib am Wickel hat dann kann man die Version mit ![]() ![]() ![]() |
AW: ActiveX - Installierte Version feststellen.
Zitat:
Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 07:26 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz