Service

Ottawa's #1 Hit Music Station

Language

古いXPを移植で済生する

PCを新しくしたら Windows XP で使っていたソフトが動かなかった、旧PCでライセンス認証していたデジタルコンテンツが読み込めなくなった。この様な場合、Windows 7 では Windows XP モードを使えば問題解決できますというのが Windows 7 の売りですが、全てのエディションで使える訳ではないところが疑問に感じる時も有るかもしれません。

そんな時は VirtualBox が使えます。新しい PCにVirtualBox をインストールして仮想マシンを作り、そこへ Windows XP をインストールすれば Windows XP モードと同じ様な環境が実現できます。

Windows XP のライセンス証書を紛失した場合は次の要領で移植可能です、旧PCのコマンドプロンプトで "slmgr /dlv" を実行するとライセンス情報のウインドウが表示されます、そこに表示されるアプリケーションID(=ライセンスキー)をメモします、ライセンス情報のウインドウを閉じて "slmgr /upk さっきメモしたアプリケーションID" を実行するとライセンスキーの登録が解除され旧PCは使えなくなります。新しいPCの VirtuakBox にインストールした Windows XP のコマンドプロンプトで "slmgr /ipk さっきメモしたアプリケーションID" を実行するとライセンスキーの移植が完了です。

Windows XP のインストールが面倒くさいという場合は Disk2vhd というソフトウェアを使います、旧PCに外付け HDD をつないで Disk2vhd を実行します、Cドライブにチェックを付けて "Prepare for use in Virtual PC" をチェックしてから "Create" ボタンをクリックすると外付け HDD にCドライブのHDD イメージが出来上がります。外付け HDD を新しい PC に接続し VirtualBox の仮想マシンを作る時に"すでにある仮想ハードドライブファイルを使用する"にチェックして先ほど作った Cドライブイメージファイルを指定すれば移植完了です。仮想マシンの作成 - ハードドライブ

注:相手先ブランド供給 (OEM) 版のOSはマイクロソフト ライセンス契約により、仮想ハード ドライブに変換されません。

大人の事情で CPUID も移植したい場合はもう少し手間を掛ける必要があります、最初に旧PCへ VirtualBox をインストールします、インストール後にコマンドプロンプトで "c:¥Program Files¥Oracle¥VirtualBox¥VBoxManage.exe list hostcpuids > c:¥cpuid.txt" を実行します(参考資料)、Cドライブ直下に cpuid.txt ファイルができるので USBメモリや新しいPCにコピーしておきます、先に挙げた方法で新しいPCに Windows XP を移植したら cpuid.txt ファイルを元に新しいPCで実行するスクリプトを作ります。cpuid.txt ファイルの中身をテキストエディタ等で開くと 16進数が書いている行があると思いますので 16進数以外の行を全て削除します、16進数の行先頭に次の様なコマンドを追記します "c:¥Program files¥Oracle¥Virtualbox¥VBoxManage.exe modifyvm 仮想マシンの名前 --cpuidset "(仮想マシンの名前は仮想マシンを新規に作るときに入力したもので VirtualBox を実行したときに VirtualBox マネージャに表示されます)、仮想マシンの作成 - 名前とオペレーティングシステム全ての 16進数行の先頭に追記したらファイル名の拡張子 "bat" にして保存、保存したバッチファイルを管理者権限で実行します(新しいPCをWindows で使っている場合)、この時 VirtualBox で Windows XP を実行している場合はシャットダウンしておきます。新しいPCが Mac や FreeBSD の場合は cpuid.txt ファイルを普通のシェルスクリプトにして root 権限で実行します(ファイルに実行権限を追加しておきましょう)。VirtualBox から Windows XP を起動してコンピュータのプロパティを見たときに CPU が旧PCの物に成っていれば移植完了です。

OS X や FreeBSD で cpuid.txt を変更する例 ("Ono-Sendai"の部分が仮想マシン名)
#!/bin/bash

VBoxManage modifyvm Ono-Sendai --cpuidset 00000000  0000000d 00008000 00000000 00000000 
VBoxManage modifyvm Ono-Sendai --cpuidset 00000000  00000000 00000000 00000000 00000000 
VBoxManage modifyvm Ono-Sendai --cpuidset 00007700  0000000d 00000000 00000000 00000000 
VBoxManage modifyvm Ono-Sendai --cpuidset 00000000  00000000 00000040 000000e0 00000080 
VBoxManage modifyvm Ono-Sendai --cpuidset 00000000  000de000 00000000 00000000 00000000 
VBoxManage modifyvm Ono-Sendai --cpuidset 00000000  00000000 00000000 00000000 00000000 
VBoxManage modifyvm Ono-Sendai --cpuidset 00000000  00000000 00000000 00000000 00000000 
VBoxManage modifyvm Ono-Sendai --cpuidset 00000000  000641cd 00000000 087b2e12 000ex620 
VBoxManage modifyvm Ono-Sendai --cpuidset 00000000  0000000d 00000000 00000000 00000000

CPUID を移植すると旧PCで購入、ライセンス認証したソフトウェアが移植した Windows XP で動く可能性があります。

参考資料

VirtualBox User Manual Chapter 8. VBoxManage (https://www.virtualbox.org/manual/ch08.html)