Hallo zusammen,
ich stehe derzeit vor dem Problem, dass ich für ein kleines Projekt alle VisualStudio Versionen inkl. Pfad zur devenv.exe ermitteln muss.
Da nicht jeder Nutzer der das Programm nutzen soll Adminrechte hat, ist leider nicht jede Variante möglich.
Kurz gesagt ich brauch eine Methode die in etwa so aussehen soll:
Quelltext
1: 2: 3: 4:
| List<Tuple<string, string>> GetStudios() { //Ermittle alle installierten Visual Studio Versionen } |
dabei sollten die Einträge der TupleList folgenden Inhalt haben:
Item1 -> Microsoft Visual Studio 2015
Item2 -> C:\Program Files (x86)\Microsoft Visual Studio 14.0\Common7\IDE\devenv.exe
oder
Item1 -> Microsoft Visual Studio 2017 Enterprise
Item2 -> C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\Common7\IDE\devenv.exe
ein Tuple mit den Werten:
Item1 -> Microsoft Visual Studio 14.0
Item2 -> C:\Program Files (x86)\Microsoft Visual Studio 14.0\Common7\IDE\devenv.exe
ist für diesen Fall leider nicht zu gebrauchen
Der Weg über DirectoryInfo bzw FileInfo um "C:\Program\" oder "C:\Program Files\" zu durchlaufen scheitert immer wegen den Rechten.
Überpringe ich die Ordner und Dateien für die ich nicht die benötigten Rechte habe, finde ich nicht alle bis gar keine VS.
Die Registry zu durchsuchen brachte zu mindest bei mir auch keinen wirklichen Erfolg, da ich nicht in der Lage war die Verbindug von Item1 und Item2 sicher zu definieren. Also entweder finde ich den Wert für das erste Item und mir fehlt dann der Pfad zur exe um das zweite Item zu füllen oder umgekehrt.
Als dritte Variante dachte ich daran den Startmenü-Ordner zu durchsuchen, leider gibt es da auch Probleme.
1. Windows Versionen: es sollten alle Windows Versionen von XP (ja, da steht wirklich XP) bis Win10 unterstützt werden, also müssten alle möglichen Pfade zu den Startmenü-Ordner jeder Version hinterlegt sein
2. Zugriffsrechte: Je nach Konstellation der Startmenü-Ordner kann es wieder nur mit Adminrechten durchsucht werden.
3. Es kann nicht gewährleistet werden, dass jeder Nutzer alle VS-Versionen im Startmenü hat.
Hat hierfür jemand eine Idee?
PS: Die Angabe der Methode und der benötigten Daten soll nicht dazu auffordern mir eine fertige Methode zu schreiben, sondern dient lediglich dazu zu verdeutlichen was gebraucht wird. Ich würde das schon gern selbst implementieren, leider fehlen mir im Moment die Ideen oder ich seh den Wald vor lauter Bäumen nicht mehr.
Darum bräuchte ich nun einen kleinen Wink mit dem Zaunpfahl
Im Vorraus schon mal DANKE