Perché Windows 7 installa applicazioni 64 bit nella cartella Programmi (x86)? Posso cambiare il comportmento?

Ho usato la versione a 64 bit di Windows 7 dal CTP e ho eseguito alcuni problemi con le applicazioni che sono installate nella cartella C:\Program Files (x86) . Qual è lo scopo di avere comunque 2 directory separate di file di programma?

Ogni programma che ho installato è andato nella cartella C:\Program Files (x86) . Non sembra importnte se l'applicazione è 32 o 64 bit. Perché le applicazioni a 64 bit non vengono poste in C:\Program Files ?

C'è un modo per cambiare l'impostazione predefinita per essere C:\Program Files invece? Sarebbe in disordine se ho inserito tutto in C:\Program Files ?

Se effettivamente c'è qualche vantaggio per avere una cartella separata per applicazioni a 64 bit, sembra che il default più sensibile sarebbe stato quello di utilizzare i file C:\Program Files per le applicazioni x86 e creare una nuova cartella C:\Program Files (x64) per le nuove applicazioni a 64 bit. Ciò contribuirebbe a mantenere la compatibilità all'indietro. Lavoro come sviluppatore di software e alcuni dei miei progetti contengono riferimenti di path alle librerie in C:\Program Files . Questi riferimenti vengono interrotti nella macchina Windows 7 che li ha inseriti in C:\Program Files (x86) . Ho persino cercato di cambiare la posizione di destinazione nel programma di installazione per essere C:\Program Files , ma che è stato ignorato e l'applicazione è andato in C:\Program Files (x86) comunque.

Questo è molto frustrante perché devo condividere il codice sorgente tra le macchine a 32 e 64 bit e non voglio che tu debba confondere con un file di configuration che imposta il path a queste librerie in modo diverso su macchine diverse.

Modifica per le variables di ambiente: (utilizzando semplicemente i valori di default di variables in inglese). Su una macchina a 64 bit %ProgramFiles% sarà C:\Program Files mentre la nuova variabile %ProgramFiles(x86)% sarà C:\Program Files (x86) . Quindi, se si dispone di un programma a 32 bit che deve trovare il path della cartella da installare sotto, dovrebbe verificare se è in esecuzione su una versione a 32 bit oa 64 bit di Windows in ordine per sapere quale variabile di ambiente da utilizzare. Tutte le applicazioni a 32 bit scritte senza questa considerazione dovrebbero essere aggiornate per funzionare correttamente su una macchina a 64 bit. Così anche utilizzando le variables di ambiente, la compatibilità all'indietro viene interrotta.

Inoltre, %ProgramFiles(x86)% non esiste nelle versioni a 32 bit di Windows. Se fosse, allora le applicazioni a 32 bit potrebbero sempre utilizzare tale variabile di ambiente e non avrebbero bisogno di alcuna logica condizionale in base a cui OS in esecuzione.

La ragione di questo è semplicemente molti installatori più vecchi o non capiscono la nuova struttura di file e si allontanano tutto nella directory di file di file standard o stai guardando un programma intelligente che ha alcuni componenti a 32 bit che vengono copiati lì.

La tua scommessa migliore è scaricare un nuovo programma, ad esempio x64 Winrar e vedere where si installa solo per escludere un problema con la macchina.

Per quanto riguarda la roba in roba – può, ma dipende davvero dal programma, non c'è una sola risposta per tutti … alcuni programmi più piccoli e compatti con solo pochi file dovrebbero non avere problemi, where come se si parla di Office , Adobe o qualsiasi altro programma "suite" o grande, probabilmente non riusciranno perché hanno molti componenti condivisi che sono l'architettura trasversale.

Se utilizzi qualcosa di diverso da %ProgramFiles% (o CSIDL_PROGRAM_FILES o sotto .NET Environment.GetFolderPath(Environment.SpecialFolder.ProgramFiles) ) è comunque in difficoltà, poiché le installazioni personalizzate possono avere programmi installati in altri volumi (D: ad esempio ) e le installazioni internazionali hanno spesso altre cartelle per impostazione predefinita.

  • Windows spagnolo: C:\Archivos de Programa ,
  • Windows francese: C:\Programmes ,
  • Windows Tedesco: C:\Programme ,
  • Windows svedese: C:\Program

eccetera.

Si prega di notare che sotto le versioni a 64 bit di Windows 7 (questo può anche essere applicato anche a altre versioni di OS più recenti, ma posso solo confermare questo per Win 7 a 64 bit) c'è una differenza tra la posizione del tuo% ProgramFiles% in esploratore e in DOS.

Sotto Windows 7 la posizione effettiva della cartella fisica di% ProgramFiles% (e la variabile% ProgramFiles (x86)% environemnt associata) viene fissata in base alla versione inglese ; cioè "C: \ Program Files" e "C: \ Program Files (x86)" rispettivamente, ma viene mostrato in exploer localizzato a seconda dei casi.

Fornire un esempio specifico; su un'installazione svedese a 64 bit di Windows 7, se si apre Esplora e cerca l'unità di sistema (tipicamente C 🙂 si vedono le cartelle " Programma " e " Programma (x86) ". Digitando% ProgramFiles% nella barra degli indirizzi si sposta in "C: \ Program".

Tuttavia, se si apre una casella DOS e si digita SET, si vedrà che il valore effettivo di% ProgramFiles% è "C: \ Programmi" e non è l'exploer della cartella "C: \ Program". Esplorare ulteriormente con CD e DIR puoi vedere fisicamente "C: \ Programmi"

La morale è se si utilizzano le variables o il programma dell'ambiente tramite il API tutto ciò che funziona ancora, ma è consapevole di questo sottile cambiamento quando esplora il file system!