Perché il software Windows 9x può essere eseguito su Windows 7 a 64 bit?


-1

Per molti anni (molto tempo dopo l'introduzione di Windows XP) ho gestito una raccolta di vecchi PC desktop Windows 9x. Fondamentalmente, queste macchine erano troppo basse nel loro hardware per essere aggiornate a XP (ed erano costate un sacco di soldi), quindi ho continuato a usarle, con il loro software originale: varie installazioni di Windows 98SE e Windows ME (tutte in esecuzione come versioni a 32 bit).

Nel caso, non ho mai usato XP. Le macchine Win9x erano così affidabili che funzionavano ancora molto dopo che XP e Vista andavano e venivano. Ma alla fine ho dovuto migrare, per un periodo di tempo, su Windows 7 a 64 bit.

Non sto per fare qualcosa di veramente stupido, come chiedermi perché un programma del genere non funzionerà su Win7 64 bit! :-)

Senza eccezioni, tutto il software che avevo eseguito su Windows 98SE a 32 bit funzionava immediatamente (per così dire) sull'architettura NT 64 bit di Win7. Oggi uso ancora una varietà di questo software, in particolare i programmi di elaborazione testi e gli editor HTML che uso abitualmente.

C'è un motivo tecnico per cui non ho mai avuto le difficoltà che mi aspettavo nell'esecuzione di programmi Windows 9x su 64 bit NT? Mi è stato detto delle impostazioni di "compatibilità" su Win7, ma non ho mai dovuto eseguire un programma in "modalità compatibilità".

Sono a conoscenza del fatto che Windows 7 mantiene i software a 32 e 64 bit in posizioni separate e li gestisce in modo diverso: ma mi aspettavo che ciò fosse correlato ai programmi a 32 e 64 bit scritti per Windows 7.

Sono sorpreso che i programmi Windows 98 a 32 bit sembrano essere completamente compatibili con i programmi Windows XP / Vista / 7 a 32 bit e vorrei capire perché sia ​​così. Non c'è davvero alcuna differenza tra loro?

Inoltre, molti dei vecchi programmi di Windows 9x erano / sono portatili. Ho avuto l'abitudine di metterli su chiavette USB o sul desktop di Windows 7 e di eseguirli. Non ho riscontrato alcun problema. Anche se non vengono eseguiti da una cartella di programmi. Ancora una volta, vorrei capire perché l'O / S non si oppone a questo, dal punto di vista tecnico?

Sto facendo qualcosa di pericoloso? Windows 7 O / S sembra molto stabile: ma vorrei sapere se gli sto chiedendo di fare cose che non dovrei.

Risposte:


3

Devi essere il primo utente a lamentarsi perché non ha alcun problema. ;)

Mentre i media mainstream hanno fatto di tutto per dare a Windows una reputazione immeritata nell'area di compatibilità delle app, il fatto è che Microsoft ha investito molto nella compatibilità con le versioni precedenti e la stragrande maggioranza delle app scritte per Windows 98 è ancora utilizzabile su Windows 7. Plus , Windows 7 è il sistema operativo più stabile che Microsoft abbia mai sviluppato. Non commettere errori, la differenza tra Windows 7 e Windows 98 è enorme ma:

  • Windows 98 ha sfruttato una ricca API di Windows che Microsoft non ha fatto di tutto per riscrivere solo perché! Ad esempio, l'interfaccia per disegnare un rettangolo sullo schermo , creare una finestra o visualizzare una barra dei menu è sempre la stessa.
  • Windows 7 ha implementato misure intese a risolvere i problemi di compatibilità del software legacy. Uno di questi è la virtualizzazione UAC. Le app di Windows 98 hanno scritto i dati delle loro app nella cartella di installazione. Windows 7 non lo consente più; tuttavia, per le app legacy, UAC Virtualization reindirizza l'operazione di scrittura dei dati all'esterno della cartella di installazione dell'app su %LOCALAPPDATA%\VirtualStore.

Le app di Windows 98 che non funzionano più in Windows 7 includono app a 16 bit (che non funzionano su Windows a 64 bit ma a volte funzionano su Windows a 32 bit) e app che si basano su hack o servizi arcani del sistema operativo legacy.


1
tldr: hanno mantenuto la compatibilità API e ABI;)
Journeyman Geek

... e implementato misure di compatibilità come UAC Virtualization

@FleetCommand: ho aperto% LOCALAPPDATA% \ VirtualStore e, curiosamente, la cartella è vuota. Ci sono un sacco di voci nella sua directory padre,% LOCALAPPDATA%, ma zilch in \ VirtualStore. Per inciso, ero completamente preciso quando mi riferivo all'utilizzo del software Win9x a 32 bit, molto tempo fa ho abbandonato tutti i programmi legacy a 16 bit rimanenti.
Ed999

1
La mancanza di supporto a 16 bit ha a che fare con la decisione di Intel su come funziona la modalità lunga e come disabilita il supporto per il funzionamento delle istruzioni richieste per le applicazioni a 16 bit quando la modalità lunga è abilitata. Che mi rendo conto che è un
factoide

1
@ Ed999: Ancora una volta, questo può solo essere buono! Hai app civili così com'è. Naturalmente, hai menzionato che "molti dei vecchi programmi di Windows 9x erano / sono portatili" e "non vengono eseguiti da una cartella di programmi". Quindi, nessuna virtualizzazione UAC per il file system. (Abbiamo anche la virtualizzazione di

1

Stai ponendo molte domande qui, alcune piuttosto complesse, ma la risposta di base è "Microsoft si impegna molto per mantenere la compatibilità con le versioni precedenti". Onestamente, una domanda migliore potrebbe essere "perché non dovrebbe funzionare?", Dal momento che sia Win9x che NT (incluso Win7) usano l'API Win32 e il set di istruzioni x86 (le estensioni a 64 bit di AMD al set di istruzioni x86 di Intel sono compatibili con le versioni precedenti; un processore "x64" in esecuzione in modalità 64 bit può anche eseguire programmi a 32 bit).

La ragione più probabile per cui le cose non funzionerebbero sarebbe semplicemente a causa dei controlli di accesso. Win9x non supportava affatto alcun tipo di controllo di accesso; qualsiasi programma poteva fare tutto ciò che voleva. Usato maliziosamente, questo ha reso la scrittura di malware davvero semplice. Utilizzato in modo non dannoso ma pigramente, questo significa che molti sviluppatori hanno scritto i loro programmi in modo tale che i programmi abbiano scritto i dati nelle loro cartelle di installazione. Questa è una cattiva idea per una serie di motivi diversi, non ultimo quello della sicurezza; su un sistema operativo "reale", la posizione predefinita in cui sono installati i file non consente ai non amministratori di scrivere su file e si suppone che si esegua come non amministratore tranne durante l'installazione / l'aggiornamento del software.

Ovviamente, l'intera cosa "scrivi nella directory da cui stai eseguendo" è facile (ho detto che gli sviluppatori erano pigri ...) e sì, rende anche il software "portatile", nel senso che puoi metterlo su un flashdrive (che di solito è anche completamente privo di controlli di accesso, in quanto utilizzano varianti del file system FAT e FAT non supporta le autorizzazioni per i file). L'esecuzione del software in questo modo è meno sicura rispetto all'installazione in un'area con accesso limitato e all'esecuzione da lì (come utente non amministratore), ma probabilmente va bene finché non si condivide il computer con altre persone.

Per quanto riguarda il motivo per cui il sistema operativo non si oppone ... perché dovresti aspettarlo? Program Filesnon è in alcun modo una cartella speciale , è solo il luogo in cui, per convenzione, si installano i programmi. (Questa è in realtà una convenzione davvero stupida, perché alcuni software si rompono se lo installi in una posizione con spazi nel suo percorso, ma forse MS voleva assicurarsi che gli sviluppatori non fossero così pigri ...) L'unica cosa speciale Program Filesè che sui sistemi a 64 bit, quando i processi a 32 bit richiedono la cartella "Programmi" vengono effettivamente indirizzati alla Program Files (x86)cartella. Oltre a ciò ... il sistema operativo ti consente di eseguire programmi da qualsiasi luogo a cui tu, l'utente, hai accesso. Alcuni programmi si installano intenzionalmente nel profilo utente o nella propria cartella nella directory principale dell'unità (C:\Python27è una cartella comune da vedere su una macchina sviluppatore). Quei programmi funzionano bene.


Non sono d'accordo con il tuo martellare sulla "pigrizia dello sviluppatore" - i concetti di sicurezza erano sconosciuti o non richiesti in quei tempi, e in genere a uno sviluppatore non è permesso di passare molte ore per qualcosa di ritenuto irrilevante. Quello che stai facendo è come incolpare le persone nel 17 ° secolo per non aver reso le strade abbastanza larghe per le auto. Altrimenti buona risposta.
Aganju,

1
@Aganju: "Sconosciuto" solo se non sapevi nulla del mondo dell'informatica, nel qual caso probabilmente non eri un dev. I principi di base della sicurezza in un sistema operativo multiutente risalgono a Multics, rilasciato nel 1969. Unix, un derivato più semplice (ma ancora sicuro) della lingua, è stato rilasciato per la prima volta nel 1973 e diffuso alla fine degli anni '70. La stessa Microsoft ha venduto Unix (Xenix) a partire dal 1980. la famiglia Windows NT, che deve molto a Unix (anche in termini di sicurezza), è stata rilasciata per la prima volta nel 1993 (Linux, BSD e molti altri sistemi operativi * nix esistevano tutti allora). Nel 1998 non c'erano scuse per l'ignoranza.
CBHacking del

Ho sviluppato dagli anni '70, ma le persone che pagano le bollette non vorrebbero sentire parlare di spendere un centesimo per la sicurezza. Vedo questo cambiamento solo dal 2005 circa
Aganju il

1
@Aganju: quanto a "non richiesto", è completamente falso. Era come richiesto allora come è adesso, ed è molto richiesto. Win98 (o addirittura 95, con alcuni aggiornamenti post-release) era apparentemente un sistema multiutente, per tutto ciò che non aveva alcun meccanismo per imporre la sicurezza tra utenti. Non c'era protezione contro software dannoso (e c'erano tonnellate di software dannoso). Le aziende (e alcune case) utilizzavano NT, tuttavia, che aveva quelle caratteristiche. Per quanto riguarda "molte ore", umm, no. Non è esattamente difficile scrivere %APPDATA%\ProgramName\Filenameinvece che solo Filename! Pigrizia pura.
CBHacking del
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.