O java.exe em C: \ Windows \ system32 é colocado lá porque esse diretório quase certamente estará mais cedo em seu caminho do que a maioria dos outros. Isto é, é uma maneira de garantir que este java.exe seja encontrado primeiro em seu caminho, não importa quais JREs ou JDKs estejam instalados.
O que este java.exe faz é verificar o seu registro para ver qual java.exe real deve ser lançado, e ele inicia isso para substituir a si mesmo.
O resultado é que, se você quiser executar uma versão específica do java e não tiver privilégios de administrador (editar o caminho do usuário, mas não puder editar o caminho do sistema), será necessário editar o registro para torná-lo a versão desejada, a que será escolhida pelo java.exe em C: \ Windows \ system32.
O documento do Oracle para Java 1.6.x: "O programa de instalação da versão do Java SE Runtime Environment do Microsoft Windows usa o registro para registrar informações de caminho e versão. O ativador de aplicativos no diretório do sistema usa as configurações do registro para obter a localização do Java SE Runtime Environment que eles devem usar ao iniciar um aplicativo. "
... e ...
"Duas cópias do executável java.exe estão instaladas. Uma cópia está no diretório bin do JRE. A segunda cópia é colocada em C: \ windows \ system ou C: \ winnt \ system32, dependendo da Devido à sua localização no diretório do sistema, essa segunda cópia do java.exe pode ser iniciada a partir de qualquer local do diretório sem fornecer o caminho completo para ele.
Esta segunda cópia do executável java.exe depende da configuração de registro CurrentVersion para determinar qual chave de registro deve ser usada para procurar o local do JRE. Por exemplo, se o registro CurrentVersion estiver definido como 1.6, o executável java.exe no diretório do sistema examinará a chave HKEY_LOCAL_MACHINE \ Software \ JavaSoft \ Java SE Runtime Environment \ 1.6 para determinar onde o JRE está instalado. "