Holen Sie sich Weg von "Program files" - Ordner, der enthält die 32-bit-Programme
Wie bestimme ich den vollständigen Pfad des Ordners ein, der 32-bit-Programme mit VBA? Es heißt "Program Files" auf 32-bit-Windows-Systemen, aber auch auf 64-bit-Systeme es heißt "Programme (x86)".
Sie schaltete die 32-und 64-bits
Auf einem bestimmten OS?
es hängt davon ab, was er bedeutet. Auf einem 32-bit Win XP, es ist nur ein "Program Files" Ordner. "Programme (x86)", die normalerweise nur unter 64-bit windows.
Ja, das ist es, was ich meinte, danke!
Beachten Sie, dass ich bin mir ziemlich sicher, das hängt davon ab, ob die Anwendung, die nicht die Anfrage ist 32 oder 64 bit.
Auf einem bestimmten OS?
es hängt davon ab, was er bedeutet. Auf einem 32-bit Win XP, es ist nur ein "Program Files" Ordner. "Programme (x86)", die normalerweise nur unter 64-bit windows.
Ja, das ist es, was ich meinte, danke!
Beachten Sie, dass ich bin mir ziemlich sicher, das hängt davon ab, ob die Anwendung, die nicht die Anfrage ist 32 oder 64 bit.
InformationsquelleAutor James | 2012-01-02
Du musst angemeldet sein, um einen Kommentar abzugeben.
Environ wird den trick tun:
Liste der Umgebungsvariablen finden hier.
UPDATE: Basierend auf dem Gespräch habe ich mit Christian und basierend auf meine Kommentare, ich sah in diesem ein wenig mehr.
Ich habe zwei Maschinen, die ich getestet auf:
Lief ich die folgenden Anweisungen in das Direktfenster:
Ergebnisse
Maschine 1:
Maschine 2:
So, auf der Grundlage dieser begrenzten Ergebnisse, möchten Sie vielleicht, um zu sehen, die, wenn ProgramW6432 hat einen Wert. Wenn nicht, übernehmen 32 bit und verwenden ProgramFiles.
Umgekehrt könnten Sie verwenden, PROCESSOR_IDENTIFIER, um zu bestimmen, x64 gegen x86 und das gleiche tun.
Ich würde nicht sagen so oder so ist narrensicher, aber sollte Sie auf der richtigen Spur.
Ich habe nicht ein handy, sondern environ("HELLO_WORLD") gibt eine leere Zeichenfolge zurück, also ich könnte mir vorstellen, Sie würde das gleiche Ergebnis erhalten, wenn die variable verwendet wird, die nur auf x64 Maschinen. Virtual PC (und andere OS-Emulatoren) sind kostenlos. Hast du ein x86 OS herumliegen, Blasen Sie den Staub aus, installieren Sie in der virtuellen Umgebung und sehen, was passiert. 🙂
Auch, ich sah nur Christian beantworten und ich sollte beachten Sie, dass auf meinem Rechner, bekomme ich verschiedene Ordner mit var "ProgramFiles" und "PROGRAMFILES(X86)". Sie wird wohl am besten sein, Sie mit Hilfe seiner Empfehlung für die x64-Ordner; und nur spekuliert hier, wenn beide "PROGRAMME(X86)" und "ProgramW6432" Rückkehr leere Werte, dann "Programme" wäre dann zutreffend.
InformationsquelleAutor ray
One-stop-shop
Dachte ich, ich fasse die Schlussfolgerungen, die gezogen werden kann, von den Informationen, verstreut über alle Antworten hier, plus ein bisschen integration meinerseits. Credits an alle bisherigen Antworten Poster!
Die Ausgabe von
Environ
für jedes "Programm-Datei"-bezogenen Umgebungsvariablen variieren je nach Windows (32 oder 64 bit) sowie Office (32-oder 64-bit) wie folgt:Beachten Sie, dass für die Windows 64-bit + Office 32-bit-setup, die Leistung von
Environ("ProgramFiles")
hat nicht übereinstimmung mit dem tatsächlichen Wert desProgramFiles
- Umgebungsvariable in Windows! An der Eingabeaufforderungecho %ProgramFiles%
zurückC:\Program Files
, nichtC:\Program Files (x86)
.Wenn müssen Sie den Pfad der 32-bit-Programm-Dateien folder (
C:\Program Files
für 32-bit-Windows, undC:\Program Files (x86)
für 64-bit-Windows), dann kannst du diese Funktion verwenden:InformationsquelleAutor Jean-François Corbett
ray023 Antwort ist grundsätzlich richtig, aber eine Ergänzung:
Zumindest auf meinem Rechner (Win 7 Home Premium 64 bit, Access 2000 installiert haben), beide
Environ("ProgramFiles")
undEnviron("PROGRAMFILES(X86)")
...wieder den gleichen Ordner
C:\Program Files (x86)
.Um die "nicht-x86-Ordner" (
C:\Program Files
) auf meinem 64-bit Windows, ichEnviron("ProgramW6432")
.Hier ist noch ein link über die
Environ
Funktion, einschließlich der code, wie, um eine Liste aller Umgebungsvariablen (das ist, wie ich gefundenProgramW6432
).EDIT:
Wie ich schon sagte in einem Kommentar, habe es gerade getestet auf meinem anderen Rechner die Ergebnisse scheinen, hängt nicht nur vom Betriebssystem, sondern auf die installierten MS Office-version:
Diese Maschine läuft auf Win XP SP3 32-bit und Access 2000 installiert ist:
Environ("ProgramFiles")
zurückC:\Programme
.(das "Program Files" auf Deutsch, ich bin in Deutschland und mein Windows ist in Deutsch)
Environ("PROGRAMFILES(X86)")
undEnviron("ProgramW6432")
eine leere Zeichenfolge zurück.--> Also der sicherste Weg, um zu bestimmen, den "x86" Ordner (egal ob auf Win XP oder Win 7) zu sein scheint
Environ("ProgramFiles")
.Nein, ich bin mit einem 32-bit-version (Access 2000, um genau zu sein - das ist nur ein Teil von MS Office, die auf dieser Maschine installiert).
Das ist interessant b/c ich habe 64bit Wort, und ich bekomme verschiedene Ordner verwenden ProgramFiles vs. PROGRAMFILES(X86). Ich Frage mich, ob das eine Rolle spielt, wenn Sie diesen Befehl verwenden; nicht bis zu dem Punkt, wo ich will, Zeit zu nehmen, um es zu testen, aber das wäre etwas für James. 😛
Seltsam. So scheint es, abhängig von der version des Betriebssystems und mit der installierten MS Office-version. Ich habe einen anderen Rechner mit Win XP 32-bit und Access 2000, ich werde das testen auf, dass ein und die Ergebnisse berichten.
InformationsquelleAutor Christian Specht
Hier ist ein Artikel, der zeigt, wie Sie Lesen diese Informationen aus der registry:
http://accesstips.wordpress.com/2010/01/08/get-a-computers-program-files-folder-path-with-access-vba-and-wmi/
In die Kommentare von diesem Artikel ist auch ein Hinweis, wie das abrufen der Informationen aus der environment-variable "ProgramFiles". Aber Vorsicht, wenn Sie verschiedene Partitionen, es kann mehr als eine "Program Files" Ordner, zum Beispiel
"C:\Program Files"
und"D:\Program Files"
.InformationsquelleAutor Doc Brown