Autor Beitrag
soluto
Hält's aus hier
Beiträge: 3



BeitragVerfasst: Fr 01.12.17 11:27 
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:

ausblenden 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? :nixweiss:

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
Frühlingsrolle
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Fr 01.12.17 11:37 
- Nachträglich durch die Entwickler-Ecke gelöscht -
soluto Threadstarter
Hält's aus hier
Beiträge: 3



BeitragVerfasst: Fr 01.12.17 11:50 
Hallo Frühlingsrolle,

danke für die schnelle Antwort.

Anscheinend habe ich mich nicht richtig ausgedrückt :eyes:

Ich muss die benötigten Daten Programmintern ermitteln.
Wenn der Nutzer später mein Programm startet soll als erstes die Funktion GetStudios() aufgerufen werden, welche von selbst die Daten sammelt und für die weitere Nutzung bereitstellt.

Da bringt mir die regedit.exe leider nicht viel. Desweiteren habe ich bereits versucht die Daten über die Registry zu ermitteln.
Frühlingsrolle
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Fr 01.12.17 12:59 
- Nachträglich durch die Entwickler-Ecke gelöscht -
soluto Threadstarter
Hält's aus hier
Beiträge: 3



BeitragVerfasst: Fr 01.12.17 13:33 
Hallo Frühlingsrolle,

nein leider helfen mir die Schlüssel nicht wirklich weiter.

als Beispiel nehm ich jetzt mal meinen Rechner an dem ich gerade sitze.

OS: Win10

Installierte VS:
2010 Express
2012 Professional
2013
2015 Professional
2015 Enterprise
2017 Enterprise

Unter
HKEY_CURRENT_USER\Software\Microsoft\VisualStudio

finde ich zwar die Versionsnummern (also 10.0, 12.0, 14.0, 15.0 etc)
leider aber nicht die Namen bzw die Pfade zur Exe, zumindest nicht von allen

unter
HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\Microsoft\VisualStudio
sieht es leider genauso aus


Suche ich nur nach devenv.exe in der Registry finde ich sehr viele Einträge, leider ist da dann aber nicht immer die Zuordnung vom Pfad zum Namen eindeutig
Frühlingsrolle
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Fr 01.12.17 14:25 
- Nachträglich durch die Entwickler-Ecke gelöscht -