AGB  ·  Datenschutz  ·  Impressum  







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

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.295 Beiträge
 
Delphi 12 Athens
 
#1

ActiveX - Installierte Version feststellen.

  Alt 24. Okt 2014, 10: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.201 Beiträge
 
Delphi 10.4 Sydney
 
#2

AW: ActiveX - Installierte Version feststellen.

  Alt 24. Okt 2014, 10: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
44.184 Beiträge
 
Delphi 12 Athens
 
#3

AW: ActiveX - Installierte Version feststellen.

  Alt 24. Okt 2014, 11: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.
$2B or not $2B

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

Registriert seit: 1. Dez 2004
Ort: Köln
1.295 Beiträge
 
Delphi 12 Athens
 
#4

AW: ActiveX - Installierte Version feststellen.

  Alt 24. Okt 2014, 11: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.201 Beiträge
 
Delphi 10.4 Sydney
 
#5

AW: ActiveX - Installierte Version feststellen.

  Alt 24. Okt 2014, 11: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: 16. Feb 2008
Ort: Baden-Württemberg
2.332 Beiträge
 
Delphi 2007 Professional
 
#6

AW: ActiveX - Installierte Version feststellen.

  Alt 25. Okt 2014, 01: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.201 Beiträge
 
Delphi 10.4 Sydney
 
#7

AW: ActiveX - Installierte Version feststellen.

  Alt 25. Okt 2014, 09: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: 16. Feb 2008
Ort: Baden-Württemberg
2.332 Beiträge
 
Delphi 2007 Professional
 
#8

AW: ActiveX - Installierte Version feststellen.

  Alt 25. Okt 2014, 17: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.201 Beiträge
 
Delphi 10.4 Sydney
 
#9

AW: ActiveX - Installierte Version feststellen.

  Alt 25. Okt 2014, 17: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
Antwort Antwort


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 08:08 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz