AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Win32/Win64 API (native code) Delphi ActiveX - Installierte Version feststellen.

ActiveX - Installierte Version feststellen.

Ein Thema von bernau · begonnen am 24. Okt 2014 · letzter Beitrag vom 25. Okt 2014
Antwort Antwort
Benutzerbild von bernau
bernau

Registriert seit: 1. Dez 2004
Ort: Köln
1.216 Beiträge
 
Delphi 11 Alexandria
 
#1

ActiveX - Installierte Version feststellen.

  Alt 24. Okt 2014, 09:46
Mit Hier im Forum suchenCLSIDFromProgID kann man ermitteln, ob ein ActiveX installiert ist. (Quelle)

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:
HKEY_CLASSES_ROOT\Wow6432Node\CLSID\{68385E69-C276-4EC1-ACE0-2EA6C831B127}\Version
HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Wow6432Node\CLSID\{68385E69-C276-4EC1-ACE0-2EA6C831B127}\Version
Die Schlüssel kann ich auslesen. Aber!!

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?
Gerd
Kölner Delphi Usergroup: http://wiki.delphitreff.de
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer

Registriert seit: 13. Aug 2002
17.076 Beiträge
 
Delphi 10.4 Sydney
 
#2

AW: ActiveX - Installierte Version feststellen.

  Alt 24. Okt 2014, 09:54
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
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
40.107 Beiträge
 
Delphi 11 Alexandria
 
#3

AW: ActiveX - Installierte Version feststellen.

  Alt 24. Okt 2014, 10:04
Das eine ist nur ein "Abkürzung" zu dem gleichen Registry-Zweig
Nicht ganz.

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.
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
Delphi-Tage 2005-2014

Geändert von himitsu (24. Okt 2014 um 10:17 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von bernau
bernau

Registriert seit: 1. Dez 2004
Ort: Köln
1.216 Beiträge
 
Delphi 11 Alexandria
 
#4

AW: ActiveX - Installierte Version feststellen.

  Alt 24. Okt 2014, 10:24
Danke euch beiden. Jetzt bin ich schlauer. Klappt hervoragend.
Gerd
Kölner Delphi Usergroup: http://wiki.delphitreff.de
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer

Registriert seit: 13. Aug 2002
17.076 Beiträge
 
Delphi 10.4 Sydney
 
#5

AW: ActiveX - Installierte Version feststellen.

  Alt 24. Okt 2014, 10:28
Das eine ist nur ein "Abkürzung" zu dem gleichen Registry-Zweig
Nicht ganz.

HKEY_CLASSES_ROOT ist ein Merge, aus vorallem HKEY_LOCAL_MACHINE\SOFTWARE\Classes und HKEY_CURRENT_USER\Software\Classes ,
Stimmt. Da war ja noch was mittels SideBySide und Installation ActiveX im User-Kontext ...
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat
Benutzerbild von sx2008
sx2008

Registriert seit: 15. Feb 2008
Ort: Baden-Württemberg
2.332 Beiträge
 
Delphi 2007 Professional
 
#6

AW: ActiveX - Installierte Version feststellen.

  Alt 25. Okt 2014, 00:09
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
fork me on Github
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer

Registriert seit: 13. Aug 2002
17.076 Beiträge
 
Delphi 10.4 Sydney
 
#7

AW: ActiveX - Installierte Version feststellen.

  Alt 25. Okt 2014, 08:12
Registry auslesen ist doch Pfui
Delphi-Quellcode:
function CoClassExists(const ClassID:TGuid):Boolean;
...
Und wo ist hier jetzt die Version zu finden?
Wie kann ich den Boolean in den korrekten Versionsstring wandeln?
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat
Benutzerbild von sx2008
sx2008

Registriert seit: 15. Feb 2008
Ort: Baden-Württemberg
2.332 Beiträge
 
Delphi 2007 Professional
 
#8

AW: ActiveX - Installierte Version feststellen.

  Alt 25. Okt 2014, 16:00
Hab die Frage nur ungenau überflogen :-[

Wenn man das Interface ITypeLib am Wickel hat dann kann man die Version mit GetLibAttr() auslesen. Mit ReleaseTLibAttr() muss die TLIBATTR Struktur wieder freigegeben werden.
fork me on Github
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer

Registriert seit: 13. Aug 2002
17.076 Beiträge
 
Delphi 10.4 Sydney
 
#9

AW: ActiveX - Installierte Version feststellen.

  Alt 25. Okt 2014, 16:17
Hab die Frage nur ungenau überflogen :-[
passiert ab und zu

Wenn man das Interface ITypeLib am Wickel hat dann kann man die Version mit GetLibAttr() auslesen. Mit ReleaseTLibAttr() muss die TLIBATTR Struktur wieder freigegeben werden.
Das kannte ich noch nicht. Könnte evtl. manche Reg-Hack-Funktion darauf umstellen
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 19:12 Uhr.
Powered by vBulletin® Copyright ©2000 - 2022, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2021 by Daniel R. Wolf