web-dev-qa-db-fra.com

Utilisation de% PROGRAMFILES (x86)% sous Windows 32 bits

Que se passe-t-il lorsque j'utilise la variable d'environnement %PROGRAMFILES(x86)% sur un système d'exploitation Windows 32 bits (c'est-à-dire d'anciennes versions de Windows telles que Windows XP, Vista)?

J'espère que cela résoudra simplement à: C:/Program Files. Cela se produira-t-il?

31
sazr

Selon à cela , la variable d'environnement %PROGRAMFILES(x86)% n'est disponible que sur les systèmes 64 bits.

Toutefois, si vous utilisez un système 64 bits et utilisez %PROGRAMFILES%, Le résultat obtenu dépend du fait que le processus demandant la variable d'environnement soit 32 bits ou 64 bits.

Ainsi, à partir d'un processus 64 bits sur un système 64 bits, vous obtiendrez C:\Program Files, D'un processus 32 bits sur un système 64 bits, vous obtiendrez C:\Program Files (x86), et à partir d'un fichier 32 processus de -bit sur un système 32 bits vous obtiendriez C:\Program Files.

Si cela ne vous aide pas, vous pouvez peut-être commenter ou modifier votre question initiale afin de préciser ce que vous essayez de faire. Dans l'état actuel des choses, la réponse à votre question est "Non".

44
Roger Rowland

Keith Hill a répondu à cette question ici , résumé:

${env:ProgramFiles(x86)} n'est pas défini sur une machine 32 bits

Si vous voulez toujours mettre/obtenir des données dans/depuis le répertoire x86, vous pouvez utiliser ce code pour déterminer les chemins de fichiers:

$file = "\file"
if ("${Env:ProgramFiles(x86)}")
{
    $fullPath = "${Env:ProgramFiles(x86)}\$file"
}
else
{
    $fullPath = "${Env:ProgramFiles}\$file"
}
3
agabrys

Puisque %ProgramFiles(x86)% n'est pas défini sur Windows 7 32 bits, voici une solution de contournement que j'ai proposée:

SET MyPath="%ProgramFiles(x86)%\MyFolder\MyApplication.exe"
rem workaround for Windows7 32 bit:
IF NOT DEFINED ProgramFiles(x86) SET MyPath="%PROGRAMFILES%\MyFolder\MyApplication.exe"

Cas d'utilisation: je souhaite appeler une application à partir d'un fichier de commandes installé:

  • sur Windows 7 32 bits dans C:\Program Files\MyFolder\MyApplication.exe
  • sur Windows 7 64 bits dans C:\Program Files (x86)\MyFolder\MyApplication.exe

Par ici %MyPath% pointe toujours sur le bon chemin.

2
uceumern