Registry Werte mit VBA auslesen
Schritt-für-Schritt-Anleitung
Um den "Friendly App Name" aus der Windows-Registry mit VBA auszulesen, kannst du folgende Schritte befolgen:
-
VBA-Editor öffnen: Drücke ALT + F11
in Excel, um den VBA-Editor zu öffnen.
-
Neues Modul erstellen: Klicke im Menü auf Einfügen
und wähle Modul
.
-
Code einfügen: Kopiere den folgenden VBA-Code in das Modul:
Option Explicit
Sub FriendlyAppNameAuslesen()
Dim HKEY_CURRENT_USER As Long
Dim oReg As Object
Dim arrApps As Variant
Dim strKeyPath As String
Dim strWert As String
Dim sProg As String
sProg = "AcroRd32.exe" ' Hier den gewünschten Programmnamen anpassen
HKEY_CURRENT_USER = &H80000001
Set oReg = GetObject("winmgmts:{impersonationLevel=impersonate}!\\.\root\default:StdRegProv")
strKeyPath = "Software\Classes\Local Settings\Software\Microsoft\Windows\Shell\MuiCache"
oReg.EnumValues HKEY_CURRENT_USER, strKeyPath, arrApps
If Not IsArray(arrApps) Then Exit Sub
For Each strApp In arrApps
If InStr(1, LCase(strApp), LCase(sProg & ".FriendlyAppName")) > 0 Then
oReg.GetStringValue HKEY_CURRENT_USER, strKeyPath, strApp, strWert
Debug.Print strApp & vbTab & strWert
End If
Next
Set oReg = Nothing
End Sub
-
Code ausführen: Drücke F5
, um das Skript auszuführen. Die Ausgabe wird im Direktfenster angezeigt.
Häufige Fehler und Lösungen
-
Fehler: Ungültige Wurzel in Registrierungsschlüssel
Lösung: Stelle sicher, dass der Pfad korrekt ist und dass der Schlüssel vorhanden ist. Überprüfe auch, ob du die richtigen Berechtigungen hast, um auf die Registry zuzugreifen.
-
Fehler: RegEintrag nicht vorhanden
Lösung: Überprüfe, ob der "Friendly App Name" für die angegebene Anwendung tatsächlich in der Registry vorhanden ist. Möglicherweise ist der Eintrag nicht vorhanden oder der Programmname ist falsch.
Alternative Methoden
Falls du alternative Wege suchst, um Registry-Werte auszulesen, kannst du auch WScript.Shell verwenden. Hier ein einfaches Beispiel:
Sub RegReadExample()
Dim WSHShell As Object
Set WSHShell = CreateObject("WScript.Shell")
On Error Resume Next
MsgBox WSHShell.RegRead("HKEY_CURRENT_USER\Software\Classes\Local Settings\Software\Microsoft\Windows\Shell\MuiCache\C:\Program Files (x86)\Adobe\Acrobat Reader DC\Reader\AcroRd32.exe.FriendlyAppName")
On Error GoTo 0
End Sub
Diese Methode ist einfach zu nutzen, bietet jedoch nicht die Flexibilität von winmgmts
.
Praktische Beispiele
Ein praktisches Beispiel, um den Adobe Acrobat Key auszulesen, sieht folgendermaßen aus:
Sub AdobeAcrobatKeyAuslesen()
Dim AppName As String
AppName = "AcroRd32.exe.FriendlyAppName"
' Füge hier die vorherige Logik ein, um den Schlüssel auszulesen
End Sub
Diese Methode kannst du leicht anpassen, um andere Anwendungen auszulesen, indem du den sProg
-Wert änderst.
Tipps für Profis
- Sicherheitsvorkehrungen: Beachte, dass der Zugriff auf die Registry Administratorrechte erforden kann. Stelle sicher, dass du deine VBA-Skripte in einer sicheren Umgebung testest.
- Debugging: Nutze
Debug.Print
, um Ausgaben im Direktfenster zu überprüfen. Dies hilft dir, Fehler schneller zu finden.
- Kommentare: Kommentiere deinen Code, um die Logik für andere Benutzer klarer zu machen.
FAQ: Häufige Fragen
1. Wie kann ich den Wert einer anderen Anwendung auslesen?
Du kannst einfach den sProg
-Wert im Code auf den Namen der gewünschten Anwendung ändern, z.B. "firefox.exe"
.
2. Welche Excel-Version wird benötigt?
Das Skript sollte in Excel 2010 und späteren Versionen funktionieren, solange VBA unterstützt wird.
3. Was ist der Unterschied zwischen WSH
und winmgmts
?
WSH
(Windows Script Host) ist einfacher für einfache Registry-Leseoperationen, während winmgmts
mehr Flexibilität und Zugriff auf verschiedene Registry-Schlüssel bietet.