![為什麼Windows 9x軟體可以在Windows 7 64位元上運作?](https://rvso.com/image/1518697/%E7%82%BA%E4%BB%80%E9%BA%BCWindows%209x%E8%BB%9F%E9%AB%94%E5%8F%AF%E4%BB%A5%E5%9C%A8Windows%207%2064%E4%BD%8D%E5%85%83%E4%B8%8A%E9%81%8B%E4%BD%9C%EF%BC%9F.png)
多年來(在 Windows XP 推出很久之後)我一直在運行一系列舊的 Windows 9x 桌上型電腦。基本上,這些機器的硬體規格太低,無法升級到 XP(並且花費了很多錢),所以我繼續使用它們,以及它們的原始軟體:Windows 98SE 和 Windows ME 的各種安裝(都運行作為32 位版本)。
結果我從來沒有用過XP。 Win9x 機器非常可靠,以至於在 XP 和 Vista 出現和消失之後很長一段時間它們仍然可以工作。但在一段時間後,我最終不得不遷移到 Windows 7 64 位元。
我不打算做一些非常愚蠢的事情,例如問為什麼某某程式不能在 Win7 64 位元上運行! :-)
無一例外,我在 32 位元 Windows 98SE 上運行的所有軟體都可以在 Win7 的 NT 64 位元架構上開箱即用(可以這麼說)。今天,我仍然使用各種此類軟體,尤其是我經常使用的文字處理程式和 HTML 編輯器。
是否有技術原因導致我在 64 位元 NT 上執行 Windows 9x 程式時從未遇到過預期的困難?我聽說過 Win7 上的“相容性”設置,但從未在“相容模式”下運行過程式。
我知道 Windows 7 將 32 位元和 64 位元軟體保存在不同的位置,並以不同的方式處理它們:但我預計這與為 Windows 7 編寫的 32 位元和 64 位元程式有關。
我很驚訝Windows 98 32位元程式似乎與Windows XP/Vista/7 32位元程式完全相容,並且想了解為什麼會這樣。他們之間真的沒有差別嗎?
此外,許多舊的 Windows 9x 程式都是可移植的。我一直習慣將它們放在 USB 記憶棒上或 Windows 7 桌面上,然後運行它們。我沒有遇到任何問題。即使它們不是從 Program Files 資料夾運行。再次,我想了解為什麼作業系統從技術角度不反對這一點?
我是否在做任何不安全的事情? Windows 7作業系統看起來非常穩定:但我想知道我是否要求它做我不應該做的事情。
答案1
您一定是第一個抱怨的用戶,因為他/她沒有任何問題。 ;)
雖然主流媒體竭盡全力地為Windows 在應用程式相容性領域帶來了不必要的聲譽,但事實是Microsoft 在向後相容性方面投入了大量資金,並且絕大多數為Windows 98 編寫的應用程式仍然可以在Windows 7 上使用。不要犯錯,Windows 7 和 Windows 98 之間的差異是巨大的,但是:
- Windows 98 利用了豐富的 Windows API,而 Microsoft 並沒有刻意重新撰寫這些 API!例如,介面為在螢幕上繪製一個矩形,創建一個視窗或者顯示選單列還是一樣。
- Windows 7 已實施旨在解決舊版軟體相容性問題的措施。其中之一是 UAC 虛擬化。 Windows 98 應用程式將其應用程式資料寫入其安裝資料夾。 Windows 7 不再允許這樣做;但是,對於舊版應用程序,UAC 虛擬化會將應用程式安裝資料夾之外的資料寫入操作重定向到
%LOCALAPPDATA%\VirtualStore
.
不再在Windows 7 中運行的Windows 98 時代的應用程式包括16 位元應用程式(不能在64 位元Windows 上運行,但有時可以在32 位元Windows 上運行)以及依賴駭客或神秘的舊作業系統服務的應用程式.
答案2
您在這裡問了很多問題,其中一些相當複雜,但基本答案是「微軟投入了大量精力來維護向後相容性」。老實說,更好的問題可能是“為什麼它不起作用?”,因為Win9x 和NT(包括Win7)都使用Win32 API 和x86 指令集(AMD 對Intel x86 指令集的64 位元擴充是向後相容的;以 64 位元模式運作的「x64」處理器也可以執行 32 位元程式)。
最可能的原因是存取控制問題。 Win9x 根本不支援任何類型的存取控制;任何程式都可以做任何它想做的事。如果被惡意使用,這使得編寫惡意軟體變得非常容易。非惡意但惰性地使用,這意味著許多開發人員編寫他們的程序,以便程式將資料寫入他們的安裝資料夾。出於多種不同的原因,這不是一個好主意,其中最重要的是安全性;在「真實」作業系統上,文件安裝的預設位置不允許非管理員寫入文件,並且您應該以非管理員身份運行,除非安裝/更新軟體時。
當然,整個“寫入您正在運行的目錄”是簡單的(我確實說過開發人員很懶……)是的,它還使軟體變得“可移植”,因為您可以將其放在閃存驅動器上(通常也完全缺乏訪問控制,因為它們使用FAT 文件系統且FAT 不支援檔案權限)。這樣運行軟體是比將其安裝到訪問限制區域並從那裡運行(作為非管理員用戶)安全性較低,但只要您不與其他人共享計算機,它可能就可以了。
至於為什麼作業系統不反對......為什麼期望它反對?Program Files
不是一個特別的無論如何,它只是您安裝程式的地方。 (這實際上是一個非常愚蠢的約定,因為如果將某些軟體安裝到其路徑中有空格的位置,某些軟體就會崩潰,但也許微軟希望確保開發人員不會太在意那懶惰...)唯一特別的是Program Files
,在 64 位元系統上,當 32 位元進程請求“Program Files”資料夾時,它們實際上會被定向到該Program Files (x86)
資料夾。除此之外......作業系統允許您從用戶有權訪問的任何地方運行程式。有些程式有意安裝在您的使用者設定檔中,或在磁碟機根目錄下它們自己的資料夾中(C:\Python27
是開發人員電腦上常見的資料夾)。這些程式運行得很好。