Lo scopo è quello di avere le cartelle predefinite dei "file di programma" (32 e 64 bit) posizionate in un percorso arbitrario, possibilmente su un'unità separata da dove risiede Windows.
Inizialmente ho pensato che questo potesse essere fatto usando una variabile di ambiente di sistema attraverso la finestra di dialogo situata in Pannello di controllo -> Sistema -> Avanzate -> Variabili d'ambiente . Queste variabili si sono rivelate essere impostate nel registro sotto la chiave HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion
. Tuttavia, una voce particolare è confusa. La ProgramFilesPath
voce sembra puntare a una variabile di ambiente che non è definita nella stessa chiave di registro.
Potrei supporre che la differenza tra ProgramFilesDir
e ProgramFilesPath
non sia nessuna e che una di esse esista come compatibilità all'indietro, ma avere qualche risorsa legittima da Microsoft da guardare sarebbe meglio che indovinare.
Dopo aver ricevuto alcuni commenti preoccupanti sull'avere entrambe le applicazioni a 32 e 64 bit nella stessa cartella, ho deciso di non chiedere la fattibilità di questo per evitare discussioni.
La vera domanda è se è possibile ottenere l'effetto desiderato "tagliando" il processo di installazione di Windows e modificando le voci di registro il prima possibile. Queste impostazioni dovrebbero essere a livello di sistema e non solo per il software installato da un determinato utente. Se questo è davvero qualcosa che può essere fatto, mi chiedo se ci siano insidie sottili.
I programmi che prevedono che librerie e altre risorse si trovino in posizioni predefinite possono probabilmente essere gestiti utilizzando la stessa tecnica utilizzata da Windows per mappare nuovamente le cartelle "Documents and Settings" e simili (ovvero, rompere le applicazioni legacy non è una vera preoccupazione).
HKCU\Environment
e HKLM\System\CurrentControlSet\Control\Sesssion Manager\Environment
, rispettivamente, non HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion
. I valori di registro ProgramFilesDir
e ProgramFilesPath
che sono in quella chiave, per quanto ho visto finora nella mia ricerca, sono valori impostati staticamente. Questo articolo della KB può anche essere una lettura interessante per i partecipanti a questa Domande e risposte.