none
Erkennen der installierten VC++ Redist RRS feed

  • Frage

  • Hallo,

    ich muss die die installierten VC++ Redistributables prüfen und nutze dafür bisher die Information aus der Registry:

    Computer\HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\Microsoft\VisualStudio\[VERSION]\VC\Runtimes\x86 | x64

    Eintrag "version".

    Vergleiche ich diesen Wert auf meinem Win10 Rechner mit den Werten aus "Programme und Features" bin ich verwundert.

    Die Werte aus der Registry lauten:

    • Bld: 21005
    • Installed: 1
    • Major: 12
    • Minor: 0
    • RbId: 1
    • Version: v12.0.21005.01

    "Programme und Features", Spalte Version:

    • 12.0.30501.0
    • 12.0.40649.5

    Die Werte driften deutlich auseinander. Angeblich soll es einen MSDN Artikel geben, wie die Registry-Werte zu interpretieren sind, bzw. wie ich die tatsächlich installierte C++ Redist Version ermitteln kann.

    Hat von euch evtl. jemand einen Hinweis hierzu für mich?

    Viele Grüße,
    Christian

    Freitag, 9. November 2018 12:40

Antworten

Alle Antworten

  • Ja, lies doch die Antworten, die dir schon gegeben wurden:
    Link zur gleichen Frage unter C++

    - Gruß Florian

    Freitag, 9. November 2018 15:21
  • Hallo Florian,

    zunächst möchte ich mich für deine Hilfe bedanken und mich in aller Form entschuldigen, dass ich noch nicht auf deine Rückmeldung im C++ Forum reagiert habe. Sorry.

    Einen Hinweis auf die Interpretation der Werte aus der Registry habe ich leider nicht gefunden. Die erwähnte Lösung über die Powershell klingt grundsätzlich gut, jedoch muss ich die Prüfung aus einer Anwendung ausführen, die auf der Programmiersprache LUA basiert. Da ich hierbei auf die Registry zugreifen kann, wäre eine Prüfung mittels Registry-Keys gut machbar.

    Heute habe ich jedoch noch folgende interessante Beobachtung gemacht. Installierte VC++ 2017 Redistributables werden bei den Programmen angezeigt, jedoch fehlen die entsprechenden Einträge in der Registry:

    Im linken Registry Tree müsste ein Eintrag "VisualStudio\14.0" vorhanden sein. Das Fehlen dieses Eintrags deutet für mich daraufhin, dass die Prüfung über die genannten Registry Einträge evtl. falsch ist.

    Viele Grüße,
    Christian

    Freitag, 9. November 2018 15:43
  • Hallo,

    anscheinend gibt es einen Bug in bestimmten Version der VC++ 2017 Redistributables, der dafür sorgt, dass der Registry-Key gelöscht wird.

    Link zur Problembeschreibung

    VG,
    Christian

    Freitag, 9. November 2018 16:20
  • Einen Hinweis auf die Interpretation der Werte aus der Registry habe ich leider nicht gefunden.

    Ich habe einen entsprechenden Link ergänzt, dabei unterscheidet sich der Deutsche MSDN Eintrag, vom US-Englischem Eintrag. Wobei es für mich nicht nachvollziehbar ist, wie Du dazu kommst einen bestimmten Registry Wert für deine Zwecke zu nutzen ohne vorher zu Wissen was dieser Wert aussagt.

    Die erwähnte Lösung über die Powershell klingt grundsätzlich gut, jedoch muss ich die Prüfung aus einer Anwendung ausführen, die auf der Programmiersprache LUA basiert. Da ich hierbei auf die Registry zugreifen kann, wäre eine Prüfung mittels Registry-Keys gut machbar.

    Da die Registry keine zuverlässigen Werte zur Redistributable Version liefert, scheint mir dies kein praktikabler Weg zu sein. Grundsätzlich denke ich das die Verantwortung für einen Downgrade Schutz beim Autor des Installationspaketes liegt und wundere mich daher über den, in der MSDN, genannten Prüfungsgrund.
    Inwieweit LUA die Möglichkeiten bietet, um ähnlich zum Powershell Beispiel das interne Manifest abzufragen, weiß ich nicht - wahrscheinlich ist dies machbar. Eine Umsetzung in C# oder C++ ist bestimmt möglich, sowohl für die Abfrage des internen Manifest, als auch für die Abfrage der Installerdatenbank (auch via WMI möglich).

    Der Installer hinterlegt in der Registry die installierten Produkte unter HKCR\Installer\Products\, so steht zum Beispiel das "Microsoft Visual C++ 2008 Redistributable - x86 9.0.30729.4974" unter HKEY_CLASSES_ROOT\Installer\Products\04583E7B553E3053FA7D36B5F2F2671E und vielleicht kann diese Stelle in der Registry für deine nicht näher genannten Zwecke reichen.


    - Gruß Florian

    Montag, 12. November 2018 11:21