Hallo
DP,
meine Anwendung soll die Möglichkeit bieten, per Butten eine fremde Anwendung zu starten.
Um die Echse, welche gestartet werden soll, zu finden, schaue ich in der Registry nach, denn dort hinterlegt diese Anwendung ihren Anwendungsordner "AppPath".
Dummerweiße steht dort aber z.B. 'C:\Programme\TheApp' drin. Wie wir ja alle wissen gibt es ab Vista den Ordner 'C:\Programme' nicht mehr, sondern nur noch 'C:\Programm Files' bzw. 'C:\Programm Files (x86)'. Ein Aufruf per "ShellExecute" schlägt somit fehl.
Nun die Frage: Gibt es eine Möglichkeit den Ordnernamen 'C:\Programme\TheApp' in den korrekten, existierenden Ordnernamen zu wandeln?
Die Fremdanwendung muß nicht zwingend in 'C:\Program Files' liegen, genauso könnte irgendwo unter 'C:\Users' oder einen 'ganz normalen' Ordner liegen.
Meine Idee mit SHGetLocalizedName bringt mir immer nur '%SystemRoot%\system32\shell32.dll' zurück, wobei sich mir allerdings nicht erschließt, wieso diese Funktion mir immer den Path zur "shell32.dll" zurück gibt. Aber egal. Diese Funktion ist m.E. eh die falsche, da (wenn ich es richtig verstanden habe) sie mir den übersetzten Path aus den realen Path zurückt gibt. Ich bräuchte es aber genau umgekehrt. Funktionieren müsste das Ganze unter XP-SP3/Vista/7/8 32bit sowie 64bit.
Jemand Ideen?
Danke und Grüße
gmc