[how-to] Windows 7 64-bits 跑多個 XP-Mode VMs 的方法

使用 Windows 7 64-bits 作業系統,比較擔心的是老舊的應用程式,只能執行於 Windows XP-32bit 的環境下。 為了能在 64-bit 的環境下,能 100% 執行 32-bit、XP 系統下的應用程式,MS 是透過執行 "Virtual PC" 的虛擬機器方式,只要是包括 Ultimate, Professional, Enterprise 等版本,均可以免費下載並安裝這個稱之為 "XP-Mode" 的虛擬 Windows XP 系統 (會自動授與一個授權的 OEM 帳號)。
*** 關於 XP-Mode 的下載與安裝,請參考:Windows Virtual PC ***

這個 "XP-Mode" 的優點是 MS 已將之最佳化,把不必要的系統服務給移除掉,所以佔用資源極小,開機後記憶體才佔用約 120MB 左右,所以跑 512MB 的環境也挺順暢。 再加上預設關閉並非是關機 (Shutdown),而是給 "休眠 (Hibernate)" 儲存至 HDD,所以爾後重新啟動的速度也是相當快。
Windows 7 x64_XP-Mode_task_manager

這個 XP-Mode VM (Virtual Machine),相當適合用來執行看盤交易程式,因為這些盤商提供的看盤交易系統,目前還沒有保證可以確實在 64-bit 的環境下正常執行。 請參考我另一篇: 在 Windows 7 64bit 下跑 AmiBroker 的方法

另外,有時候為了開發一些 Win-32 的程式,例如 DDE,所以會需要安裝如 VB6 的開發環境 (Visual Basic 6)。 為了不希望在原來 Windows 7 64-bit 安裝有的沒的,且使用次數其實不多,所以也會想安裝在 "XP-Mode" 內:但是又不希望與實際執行交易的作業環境下放在一起,所以希望能 "複製 (Clone)" 另一個 "XP-Mode" VM,並在其內安裝 Win32 的程式開發環境。

但是,"XP-Mode" 可不像 Vmware 這般,直接複製即可。 在 Virtual PC 的管理介面,你根本看不到可以複製 "XP-Mode" 的指令。 而如果你直接用檔案複製 (Copy) 的方式,則是無法執行新複製的那個 VM。

到底可不可以在 Windows 7 x64 的環境下同時執行多個 "XP-Mode" VM 呢? 答案是 Yes!

但是需要經過一些步驟,參考這一篇: How to Copy a Virtual XP Machine in Windows 7 。 這裡我就簡單的列出設定方法,如下:

  1. 為了能看到隱藏的檔案 (hidden files),所以需要至 [檔案總管] → [組合管理] → [資料夾和搜尋選項] → [檢視] → [進階設定] 選項中,將 "隱藏檔案和資料夾" 設定為顯示;"隱藏已知檔案的副檔名" 的預設勾選移除掉,使之可以顯示副檔名。
  2. 已確實安裝了 "XP-Mode" VM (安裝完畢後,強烈建議先至 Windows Update 作必要的更新),並確實有關閉 "XP-Mode" 系統(不是休眠)。 執行關機的動作是需在其選單中,點選 "Ctrl+Alt+Del",再選擇關機。
  3. 至儲存 "XP-Mode" 實體檔案所在的資料夾位置。 預設是位於 "C:\使用者\{你的使用者名稱}\AppData\Local\Microsoft\Windows Virtual PC\虛擬機器"。 (其實在安裝 "XP-Mode" 時,可以自己指定 VM 儲存的磁碟路徑。)
  4. 將 "Windows XP Mode.vhd" 與 "Windows XP Mode.vmc" 兩個檔案複製,並更名 (Rename)為如 "Windows XP Mode_TradingSys.vhd" 與 "Windows XP Mode_TradingSys.vmc"。
  5. 利用文字編輯器,如 Notepad,打開 "Windows XP Mode_TradingSys.vmc" (其實這只是個 XML 設定檔) 這個檔案。
  6. 搜尋 "<drive_type type="integer">1</drive_type>" 字串,在其下的 <pathname> tag 內,將預設的 VM檔名更改為所複製更改的名稱:
    <absolute type="string">D:\My VMs\Virtual PC\Windows XP Mode_TradingSys.vhd</absolute>
    <relative type="string">.\Windows XP Mode_TradingSys.vhd</relative>
    
  7. 搜尋 "<virtual_network>" 字串,在其內的 "<id type="bytes">" Tag,更改 MAC Address 數值 (只要把最後一位數 1 改為 0 即可)。 目的是當執行多個 VMs 時,實體網路位址不能是同樣的編號。
  8. 儲存並關閉上述已更改的檔案內容。
  9. 至 "C:\使用者\{你的使用者名稱}\虛擬機器" 目錄,複製 "Windows XP Mode.vmcx",並將複製的檔名更改為 "Windows XP Mode_TradingSys.vmcx"。
  10. 開啟並編輯 "Windows XP Mode_TradingSys.vmcx",在 <primary_disk1 type="string"> 與 <vmc_path type="string"> 兩個 Tag 內的檔名字串,改為 ""Windows XP Mode_TradingSys.vmcx"。

完成! 從 Virtual PC 的管理介面中,就可以看到有兩個 "XP-Mode" 的 VM,並且可以個別且同時開啟,如下圖。 不過,同時執行多個 "XP-Mode" 技術上是可行,但是前提是你要有足夠的 Windows XP Licenses。 否則建議還是一次只執行一個 "XP-Mode" VM,以避免違背授權的規範。
windows7_x64_run_multiple_xp-mode

文章導覽

   

共有 13 則迴響

  1. 但是只要到Windows Virtual PC > 建立虛擬機器
    新增一個XP5,但是不要先把它開動, 要關掉
    然後到X:\Users\USER\AppData\Local\Microsoft\Windows Virtual PC
    把原先的XP5.vhd刪除,
    再複製一個XP4.vhd, 貼上, 更名為XP5.vhd(因為原先的XP5.vhd是沒有OS的)
    再開動
    這樣便大功告成~
    => 這招好像比原來的改.vmc, .vmcx方法快的多, 只要在建立前先把原本的.vhd copy成好幾份, 在建立虛擬機器時選擇使用現有的虛擬硬碟檔, 然後選copy出來的.vhd檔, 就可以開出多個copy的VM了.

  2. 謝謝KENMING大大解答

    經過幾次研究,問題已解決了

    方法是:
    假設在先前開了4個XP MODE, 分別是XP1,XP2,XP3,XP4
    第5個是不能開了。

    但是只要到Windows Virtual PC > 建立虛擬機器
    新增一個XP5,但是不要先把它開動, 要關掉
    然後到X:\Users\USER\AppData\Local\Microsoft\Windows Virtual PC
    把原先的XP5.vhd刪除,
    再複製一個XP4.vhd, 貼上, 更名為XP5.vhd(因為原先的XP5.vhd是沒有OS的)
    再開動
    這樣便大功告成~

  3. 請問一下, 要怎樣才可增加多一組xp Licenses呢?(我本身有一組)
    我嘗試過同時能跑4個xp mode, 但開動第5個時就說已有同名的機器了

  4. 嗯~~感謝版主提供那麼實用的分享 ,,
    我在想 ,,如果把這個 “XP MODE” setup到 記憶體上面的話 ,
    那~ 在XP上跑 一定是非常非常有效率的呦 ^^ㄎ…. 滑價一定減少~

    就煩請版主”感受”一下~ 並觀察看看是否有效 ,, thanks ^^

    • 這樣不妥喔。

      因為 VM 的狀態是儲存在 C:\使用者\{你的使用者名稱}\虛擬機器,一旦 RamDisk 消失,如此會造成狀態的錯亂。

      除非,RamDisk 可以儲存關機後的狀態,但強烈不建議,因為檔案太大。

      倒是儲存在 SSD 固態硬碟內是可行的辦法。

    • 另外我忘了說,滑價或交易系統 “Hang” 住,是交易應用程式本身的設計問題。 即使你放在 RamDisk,問題仍然會是一樣發生的。

      這些交易應用程式的設計,普遍作得很差很差~

發表迴響

你的電子郵件位址並不會被公開。 必要欄位標記為 *