Die automatische Korrektur von Programme nach "Program Files" funktioniert auch nur, wenn unter Vista der entsprechende Junction Point erstellt ist. Bei einem deutschen Vista mit schwedischem Sprachpack ist das zum Beispiel nicht der Fall. Ich vermute mal, daß ein englisches Vista mit deutschem Sprachpack dasselbe Problem zeigt.
Ich vermute mal, daß man eine Funktion schreiben muß, die systematisch für jeden Ordner die lokalisierten und realen Dateinamen vergleicht. Sobald der Dateiname gefunden wurde, geht man in die nächste Ebene...
SHGetLocalizedName sollte man übrigens nur für Dateien nehmen, nicht für Verzeichnisse. So steht es zumindest im Platform
SDK.