Você pode obtê-lo da variável de ambiente %ProgramW6432%
. Essa variável existe nas versões de 64 bits do Windows e sempre aponta para a instância de 64 bits de Program Files
.
O problema é que, no meu caso, um arquivo de lote executado a partir do aplicativo de 32 bits tem% ProgramFiles% expandindo para "C: \ Program Files (x86)".
Leia isto SO para sua resposta: link
Ele usa variáveis de ambiente para identificar pastas de arquivos de programas x86 e 64 bits