Registry auslesen mit VBA

gehtnetgibtsnet

Cadet 4th Year
Registriert
März 2019
Beiträge
103
Hallo Forum.

Ich könnte wieder einmal eine Unterstützung brauchen.

Eine Anwendung auf meinem PC hat seine Informationen alle in der Registry gespeichert. So auch den Pfad für einen bestimmten Teil der Anwendung. Nun habe ich versucht, den Bereich der Registry auf der Basis von Beispielen aus dem Internet auszulesen. Erfolg hatte ich dabei nicht. Vermutlich habe ich auch die verschiedenen Beispiele nicht richtig verstanden.

Als Beispiel für einen Test habe ich mir den Pfad "HKEY_CURRENT_USER\SOFTWARE\Garmin\Express" ausgesucht.

In diesem Pfad gibt es folgende Informationen, die ich (testweise) gerne auslesen wollte, ohne aber deren Namen zu kennen:

1684568759740.png



Wie komme ich an diese Daten? Wer kann helfen?
 
wenns nicht unbedingt vba sein muss:
PowerShell:
Get-ItemProperty -Path 'HKCU:\SOFTWARE\Garmin\Express'
 
Zuletzt bearbeitet:
Vielleicht hilft dir ja der Befehl reg in der Standard Windows CMD Shell weiter. Mögliche fiese Krücke (aka Workaround): Ausgabe in Datei umleiten, Datei in VBA einlesen und verarbeiten.

Code:
reg query HKCU\SOFTWARE\Garmin\Express >garmin_reg.txt

Falls du einen Schlüsselnamen schon kennst, geht das auch gezielt:
Code:
reg query HKCU\SOFTWARE\Garmin\Express /v InstallDir

Oder z.B. nur die numerischen Werte:
Code:
reg query HKCU\SOFTWARE\Garmin\Express /t REG_DWORD
 
Den Tip von Kartoffelpü habe ich ausprobiert. Ich sehe zwar einige Namen, aber keine Werte. Möglicherweise habe ich auch etwas falsch verstanden.

Warum VBA? Weil das die einzige Softwaresprache auf dem PC ist, die ich ein wenig verstehe und deshalb einsetzen kann.
 
Google liefert beim ersten Treffer das Schlagwort SaveSetting.
Viel Erfolg.

CN8
 
gehtnetgibtsnet schrieb:
Ich sehe zwar einige Namen, aber keine Werte.
Die PowerShell-Konsole muss mit Adminrechten ausgeführt werden.

PowerShell:
$Values = Get-ItemProperty -Path "HKCU:\SOFTWARE\Garmin\Express" "*"
$Values
 
cumulonimbus8 schrieb:
liefert beim ersten Treffer
Den zweiten mit SaveSetting habe ich genrös weggelassen 😇

@NotNerdNotDau u.a.
Es wurde VBA gefordert, warum immer diese PS-Vorschläge; die mit Sicherheit umständlicher zu handhaben ist (»Schwurbelsyntax«)?

CN8
 
cumulonimbus8 schrieb:
Es wurde VBA gefordert, warum immer diese PS-Vorschläge
Ich bin lediglich auf den Kommentar (siehe Zitat), wie man sich alles anzeigen lassen kann, eingegangen.
Was soll denn an einem Einzeiler umständlich sein?

Grundsatzdiskussionen, welche Skriptsprache für jemanden die bessere oder schlechtere und besser oder schlechter zu handhaben ist, sind für mich nicht zielführend.
Das muss jeder für sich selbst herausfinden.
 
cumulonimbus8 schrieb:
Es wurde VBA gefordert, warum immer diese PS-Vorschläge;
Ganz einfach: "Wenn man nur einen Hammer hat, sieht jedes Problem aus wie ein Nagel." Es braucht hier schlicht gar keine Skriptsprache, der simple reg-Befehl genügt bereits.
 
Ich habe mein Problem in zwischen gelöst:

Result = CreateObject("WScript.Shell").Run(ExPortCmd & " " & ExportFile)

Hat den Vorteil, dass ich nicht nur einen Key auslesen kann, sondern alle Subkeys, so wie das beim Registry-Export vorgesehen ist. Die Auswertung der Antwort ist kein Problem.
 
Hallo Evil E-Lex.

Natürlich gibt es den "REG"-Command, den man grundsätzlich einsetzen kann. Doch mein Ziel war es, aus den in der Registry gepeicherten Daten Informationen auszulesen und diese in einem Makro weiterzuverarbeiten. Da macht es wenig Sinn, den Export "von Hand" zu machen.

Nachdem ich nun den entsprechenden Wert ermittelt habe, kann ich (mit Vorsicht!) die Steueranweisungen der betreffenden Anwendung "modifizieren". Und das war mein erklärtes Ziel.

Mir fehlt jetzt nur noch der letzte Schritt. Die erforderlichen Daten habe ich jetzt.
 
GeheimnisExcel schrieb:
Doch mein Ziel war es, aus den in der Registry gepeicherten Daten Informationen auszulesen und diese in einem Makro weiterzuverarbeiten. Da macht es wenig Sinn, den Export "von Hand" zu machen.
Das mag so sein. Doch weder bist du der TE, noch wurde von diesem die Notwendigkeit von VBA dargestellt. VBA ist erstmal so ziemlich die letzte Methode die man einsetzten würde, um Daten aus der Registry auszulesen. Es ist leider in diesem Forum mittlerweile absolut üblich, dass hier Postings mit unvollständigen Informationen erstellt werden und man sich daher nur wundern kann, welche kruden Randbedingungen gefordert werden, da das Szenario eingangs nicht umfassend beschrieben wird. Mithin sind das fast ausschließlich XY-Probleme, die einfach nur lästig sind und zu keinerlei Erkenntnisgewinn führen.
 
Das ist kein XY-Problem.
Der Threadtitel ist eindeutig, und es lässt sich grundsätzlich so angreifen.
(Und wir sollten VBA nicht mit VBS verwürfeln.)

Ob VBA hier effizient ist ist die zweite Frage. Und vielleicht lässt sich aus VBA heraus mit anderen Mitteln das alles in der Tat besser schaukeln. Ich habe selbst mit so was zu hantieren, nur ist VBA eben die nötige Verbindungsplattform zwischen Daten und dem rauskommen soll.

CN8
 
Zurück
Oben