2009-08-20 33 views
2

Gibt es einen Weg von einer 32-Bit-Anwendung auf einem 64-Bit-System, Zugriff auf die Standardordner für 64-Bit-Anwendungen zu haben?SHGetSpecialFolderPath, wie auf 64-Bit-CSIDL von 32-Bit-Anwendung zugreifen

Zum Beispiel mit SHGetSpecialFolderPath mit CSIDL_PROGRAM_FILES von einer 32-Bit-Anwendung gibt „C: \ Program Files (x86)‘ Wenn der gleiche Anruf von einer 64-Bit-Anwendung verwendet wurde, würde ich ‚C:. \ Program Files‘ Gibt es ein Weg, um die „C: \ Program Files“? von einer 32-Bit-Anwendung

eine ähnliche Frage hier nicht SHGetFolderPath() 32 bit vs 64 bit hilft noch die wow64 Dateisystem Umleitung nicht Unterdrücken vor SHGetSpecialFolderPath

Antwort

2

Beantwortung meine Frage nennen, wie es scheint Dies ist mit SHGetSpecialFolderPath nicht möglich.In Vista und höher ermöglicht die Ersetzungsfunktion SHGetKnownFolderPath die Verwendung von FOLDERID_ProgramFil esX64

+0

Siehe den MSDN-Artikel zu [Bekannte Ordner] (http://msdn.microsoft.com/en-us/library/bb776911%28v=vs.85%29.aspx) – MrBry

+0

FOLDERID_ProgramFilesX64 funktioniert nicht, wenn die Anwendung ist 32 Bit auf einem 64-Bit-Betriebssystem. Die Umgebungsvariable "ProgramFiles" funktioniert jedoch. –

1

Ich glaube der ganze Grund für separate Ordner war zu verhindern, dass 32 und 64-Bit-Anwendungen mischen. Daher sollten Sie nicht einen Ordner sehen, der zu einer anderen Bitness gehört als Ihre Anwendung.

Sie haben vielleicht einen sehr guten Grund, aber ich sehe keinen in Ihrer Frage wie gepostet.

+0

Es ist für eine 32-Bit-Anwendung, die installationsbezogene Aufgaben für 32-Bit- und 64-Bit-Anwendungen auf 32-Bit- und 64-Bit-Systemen ausführen muss. Die exakt gleiche Binärdatei muss in allen Systemen verwendet werden (andernfalls könnten wir einfach neu kompilieren). Das ist keine Voraussetzung, die wir ändern können, leider –

+0

Microsoft hat wirklich versaut, als sie versuchten, all diese Sachen zu verstecken und Dinge herumzuhacken. Der offensichtliche Grund, den 64-Bit-Programmordner zu bekommen, ist ein 64-Bit-Programm zu finden! I.e. Vielleicht möchten Sie es ausführen. Es gibt keinen Grund, warum ein 32-Bit-Programm keinen Zugriff auf diesen Ordner haben sollte. Es gibt auch keinen Grund, warum es sogar einen separaten Ordner Programme geben sollte, aber dieser Fehler liegt in der Vergangenheit. – swpalmer