Ich benutze:
FileInfo(
System.Environment.GetFolderPath(
System.Environment.SpecialFolder.ProgramFiles)
+ @"\MyInstalledApp"
Um festzustellen, ob ein Programm auf einem Computer des Benutzers erkannt wird (es ist nicht ideal, aber das Programm, das ich suche, ist ein richtiger alter Kludge einer MS-DOS-Anwendung, und ich konnte mir keine andere Methode vorstellen).
Unter Windows XP und 32-Bit-Versionen von Windows Vista funktioniert dies einwandfrei. Unter x64 Windows Vista gibt der Code jedoch den Ordner x64-Programmdateien zurück, während die Anwendung in Programme 86 installiert ist. Gibt es eine Möglichkeit, den Pfad zu Programmdateien x86 ohne feste Verkabelung "C: \ Programme (x86)" programmgesteuert zurückzugeben?
Antworten:
Die folgende Funktion gibt das x86-
Program Files
Verzeichnis in allen drei Windows-Konfigurationen zurück:quelle
Environment.Is64BitOperatingSystem
oderEnvironment.Is64BitProcess
?Wenn Sie .NET 4 verwenden, gibt es eine spezielle Ordneraufzählung ProgramFilesX86 :
quelle
quelle
Beachten Sie jedoch, dass die
ProgramFiles(x86)
Umgebungsvariable nur verfügbar ist, wenn in Ihrer Anwendung 64-Bit ausgeführt wird.Wenn Ihre Anwendung 32-Bit ausführt, können Sie einfach die
ProgramFiles
Umgebungsvariable verwenden, deren Wert tatsächlich "Programme (x86)" ist.quelle
Eine Möglichkeit wäre, nach der Umgebungsvariablen "ProgramFiles (x86)" zu suchen:
quelle
Ich schreibe eine Anwendung, die sowohl auf der x86- als auch auf der x64-Plattform für Windows 7 ausgeführt werden kann, und beim Abfragen der folgenden Variablen wird nur der richtige Pfad für Programmordner auf jeder Plattform abgerufen.
quelle
Einzeiler mit der neuen Methode in .NET. Gibt immer den Ordner x86-Programmdateien zurück.
Environment.Is64BitOperatingSystem ? Environment.GetEnvironmentVariable("ProgramFiles(x86)") : Environment.GetEnvironmentVariable("ProgramFiles"))
quelle
C # -Code:
Environment.GetFolderPath(Environment.SpecialFolder.ProgramFilesX86)
Ausgabe:
C: \ Programme (x86)
Hinweis:
Wir müssen dem Compiler mitteilen, dass er eine bestimmte Build-Plattform nicht bevorzugen soll.
Grund:
quelle