因授權遷移、批量授權轉換等原因,有時需要在已安裝的 XP 系統上更換產品金鑰。微軟提供兩種官方支援方式:啟動精靈(GUI)與 WMI 腳本。操作前強烈建議建立系統還原點。
regedit,定位 HKEY_LOCAL_MACHINE\Software\Microsoft\WindowsNT\CurrentVersion\WPAEventsOOBETimer 選擇「修改」,至少變更一個位元組,確定儲存%systemroot%\system32\oobe\msoobe.exe /a 啟動啟動精靈提供兩支 VBScript,分別針對已安裝 SP1與未安裝 SP1的環境:
' WMI Script - ChangeVLKeySp1.vbs
' Windows XP With SP1
ON ERROR RESUME NEXT
if Wscript.arguments.count<1 then
Wscript.echo "Script can't run without VolumeProductKey argument"
Wscript.echo "Correct usage: Cscript ChangeVLKey.vbs ABCDE-FGHIJ-KLMNO-PRSTU-WYQZX"
Wscript.quit
end if
Dim VOL_PROD_KEY
VOL_PROD_KEY = Wscript.arguments.Item(0)
VOL_PROD_KEY = Replace(VOL_PROD_KEY,"-","")
for each Obj in GetObject("winmgmts:").InstancesOf ("win32_WindowsProductActivation")
result = Obj.SetProductKey (VOL_PROD_KEY)
if err <> 0 then
WScript.Echo Err.Description, "0x" & Hex(Err.Number)
Err.Clear
end if
Next
' WMI Script - ChangeVLKey2600.vbs
ON ERROR RESUME NEXT
if Wscript.arguments.count<1 then
Wscript.echo "Script can't run without VolumeProductKey argument"
Wscript.echo "Correct usage: Cscript ChangeVLKey.vbs ABCDE-FGHIJ-KLMNO-PRSTU-WYQZX"
Wscript.quit
end if
Dim VOL_PROD_KEY, WshShell
VOL_PROD_KEY = Wscript.arguments.Item(0)
VOL_PROD_KEY = Replace(VOL_PROD_KEY,"-","")
Set WshShell = WScript.CreateObject("WScript.Shell")
WshShell.RegDelete "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\WPAEvents\OOBETimer"
for each Obj in GetObject("winmgmts:").InstancesOf ("win32_WindowsProductActivation")
result = Obj.SetProductKey (VOL_PROD_KEY)
if err <> 0 then
WScript.Echo Err.Description, "0x" & Hex(Err.Number)
Err.Clear
end if
Next
C:\ChangeVLKeySp1.vbs(或 2600 版)C:\ChangeVLKeySp1.vbs XXXXX-XXXXX-XXXXX-XXXXX-XXXXX請確保使用合法授權產品金鑰。盜版金鑰可能導致系統不穩、無法更新、法律風險。企業環境建議使用批量授權媒體與金鑰,並搭配腳本進行大量部署自動化。