I've tried the VB script below (referenced here: http://technet.microsoft.com/en-us/magazine/cc194422.aspx) to add dual boot functionality for WinXP and WinPE 2, but it never displayed the Windows PE option, but the Boot Manager did operate correctly outside of that, but I have a bad feeling that it wouldn't work anyway since that part didn't work.
CODE
Dim WshShell, FSO
Set WshShell = WScript.CreateObject("WScript.Shell")
Set FSO = WScript.CreateObject("Scripting.FileSystemObject")
IF FSO.FolderExists("c:\boot") then
Msgbox "The ""c:\boot"" folder already exists. Please delete it (to verify you want it overwritten)."
END IF
WSHShell.run "bcdedit /createstore", 0, TRUE
WSHShell.run "bcdedit /create {ramdiskoptions} /d ""Boot Windows PE""", 0, TRUE
WSHShell.run "bcdedit /set {ramdiskoptions} ramdisksdidevice partition=c:", 0, TRUE
WSHShell.run "bcdedit /set {ramdiskoptions} ramdisksdipath \boot\boot.sdi", 0, TRUE
Set getGUID = WshShell.Exec("bcdedit -create /d ""Windows PE"" /application OSLOADER")
Do While getGUID.Status = 0
WScript.Sleep 100
Loop
'Fun little set of code to grep out the GUID
strGUID = getGUID.StdOut.ReadAll
arr1GUID = Split(strGUID, "{")
arr2GUID = Split("{"&arr1GUID(1), "}")
strGUID = arr2GUID(0)&"}"
WSHShell.run "bcdedit /set "&strGUID&" device ramdisk=[c:]\boot\boot.wim,{ramdiskoptions}", 0, TRUE
WSHShell.run "bcdedit /set "&strGUID&" path \windows\system32\winload.exe", 0, TRUE
WSHShell.run "bcdedit /set "&strGUID&" osdevice ramdisk=[c:]\boot\boot.wim,{ramdiskoptions}", 0, TRUE
WSHShell.run "bcdedit /set "&strGUID&" systemroot \windows", 0, TRUE
WSHShell.run "bcdedit /set "&strGUID&" winpe yes", 0, TRUE
WSHShell.run "bcdedit /set "&strGUID&" detecthal yes", 0, TRUE
WSHShell.run "Bcdedit /create {bootmgr} /d ""Boot Manager""", 0, TRUE
WSHShell.run "Bcdedit /set {bootmgr} device boot", 0, TRUE
'Create the entry to boot Windows XP (or whatever OS's you have booting via boot.ini
WSHShell.run "bcdedit /create {ntldr} /d ""Windows XP""", 0, TRUE
WSHShell.run "bcdedit /set {ntldr} device partition=C:", 0, TRUE
WSHShell.run "bcdedit /set {ntldr} path \ntldr", 0, TRUE
WSHShell.run "bcdedit /displayorder {ntldr} /addfirst", 0, TRUE
'Without these files, the system won't boot
CheckFile "BOOTMGR", 1
CheckFile "BOOT\BOOT.SDI", 1
CheckFile "SOURCES\BOOT.WIM", 1
'You won't need these files unless you want additional language support at boot time.
CheckFile "BOOT\FONTS\CHS_BOOT.TTF", 0
CheckFile "BOOT\FONTS\CHT_BOOT.TTF", 0
CheckFile "BOOT\FONTS\JPN_BOOT.TTF", 0
CheckFile "BOOT\FONTS\KOR_BOOT.TTF", 0
CheckFile "BOOT\FONTS\WGL4_BOOT.TTF", 0
Msgbox "Your system is now set up to boot Windows PE 2.0 as well as your previous operating systems."
'Function to check for and copy the necessary files for BOOTMGR functionality
FUNCTION CheckFile(FilePath,bCrit)
IF NOT FSO.FileExists(FilePath) then
If bCrit = 1 THEN
IF FilePath = "BOOTMGR" THEN
Msgbox "Script could not find the file "&FilePath&", which is needed to set up the system to boot to Windows PE 2.0."&vbcrlf&"Please place it in the same directory as this script and re-start the script."
ELSE
Msgbox "Script could not find the file "&FilePath&", which is needed to set up the \boot directory."&vbcrlf&"Please place it in a directory named ""boot"" (or ""sources"" for the boot.wim file to be copied) in the same directory as this script and re-start the script."
END IF
END IF
ELSE
IF FilePath = "SOURCES\BOOT.WIM" THEN
FSO.CopyFile FilePath, "C:\BOOT\BOOT.WIM"
ELSE
IF NOT FSO.FolderExists("c:\boot\fonts") THEN
FSO.CreateFolder("c:\boot\fonts")
END IF
FSO.CopyFile FilePath, "C:\"&FilePath
END IF
END IF
END FUNCTION
Set WshShell = WScript.CreateObject("WScript.Shell")
Set FSO = WScript.CreateObject("Scripting.FileSystemObject")
IF FSO.FolderExists("c:\boot") then
Msgbox "The ""c:\boot"" folder already exists. Please delete it (to verify you want it overwritten)."
END IF
WSHShell.run "bcdedit /createstore", 0, TRUE
WSHShell.run "bcdedit /create {ramdiskoptions} /d ""Boot Windows PE""", 0, TRUE
WSHShell.run "bcdedit /set {ramdiskoptions} ramdisksdidevice partition=c:", 0, TRUE
WSHShell.run "bcdedit /set {ramdiskoptions} ramdisksdipath \boot\boot.sdi", 0, TRUE
Set getGUID = WshShell.Exec("bcdedit -create /d ""Windows PE"" /application OSLOADER")
Do While getGUID.Status = 0
WScript.Sleep 100
Loop
'Fun little set of code to grep out the GUID
strGUID = getGUID.StdOut.ReadAll
arr1GUID = Split(strGUID, "{")
arr2GUID = Split("{"&arr1GUID(1), "}")
strGUID = arr2GUID(0)&"}"
WSHShell.run "bcdedit /set "&strGUID&" device ramdisk=[c:]\boot\boot.wim,{ramdiskoptions}", 0, TRUE
WSHShell.run "bcdedit /set "&strGUID&" path \windows\system32\winload.exe", 0, TRUE
WSHShell.run "bcdedit /set "&strGUID&" osdevice ramdisk=[c:]\boot\boot.wim,{ramdiskoptions}", 0, TRUE
WSHShell.run "bcdedit /set "&strGUID&" systemroot \windows", 0, TRUE
WSHShell.run "bcdedit /set "&strGUID&" winpe yes", 0, TRUE
WSHShell.run "bcdedit /set "&strGUID&" detecthal yes", 0, TRUE
WSHShell.run "Bcdedit /create {bootmgr} /d ""Boot Manager""", 0, TRUE
WSHShell.run "Bcdedit /set {bootmgr} device boot", 0, TRUE
'Create the entry to boot Windows XP (or whatever OS's you have booting via boot.ini
WSHShell.run "bcdedit /create {ntldr} /d ""Windows XP""", 0, TRUE
WSHShell.run "bcdedit /set {ntldr} device partition=C:", 0, TRUE
WSHShell.run "bcdedit /set {ntldr} path \ntldr", 0, TRUE
WSHShell.run "bcdedit /displayorder {ntldr} /addfirst", 0, TRUE
'Without these files, the system won't boot
CheckFile "BOOTMGR", 1
CheckFile "BOOT\BOOT.SDI", 1
CheckFile "SOURCES\BOOT.WIM", 1
'You won't need these files unless you want additional language support at boot time.
CheckFile "BOOT\FONTS\CHS_BOOT.TTF", 0
CheckFile "BOOT\FONTS\CHT_BOOT.TTF", 0
CheckFile "BOOT\FONTS\JPN_BOOT.TTF", 0
CheckFile "BOOT\FONTS\KOR_BOOT.TTF", 0
CheckFile "BOOT\FONTS\WGL4_BOOT.TTF", 0
Msgbox "Your system is now set up to boot Windows PE 2.0 as well as your previous operating systems."
'Function to check for and copy the necessary files for BOOTMGR functionality
FUNCTION CheckFile(FilePath,bCrit)
IF NOT FSO.FileExists(FilePath) then
If bCrit = 1 THEN
IF FilePath = "BOOTMGR" THEN
Msgbox "Script could not find the file "&FilePath&", which is needed to set up the system to boot to Windows PE 2.0."&vbcrlf&"Please place it in the same directory as this script and re-start the script."
ELSE
Msgbox "Script could not find the file "&FilePath&", which is needed to set up the \boot directory."&vbcrlf&"Please place it in a directory named ""boot"" (or ""sources"" for the boot.wim file to be copied) in the same directory as this script and re-start the script."
END IF
END IF
ELSE
IF FilePath = "SOURCES\BOOT.WIM" THEN
FSO.CopyFile FilePath, "C:\BOOT\BOOT.WIM"
ELSE
IF NOT FSO.FolderExists("c:\boot\fonts") THEN
FSO.CreateFolder("c:\boot\fonts")
END IF
FSO.CopyFile FilePath, "C:\"&FilePath
END IF
END IF
END FUNCTION
I also tried the batch routine from WreX below and it will show the WinPE option in the boot menu and XP and the receovery console work fine, however, it gets the Status:0xc000000f error message that "The Boot selection failed because a required device is inaccessible.". And I assume I need to apply the WinPE.wim to a certain path, but I am not sure of where.
CODE
xcopy D:\BOOT\*.* /e /f /y C:\BOOT\
copy D:\BOOTMGR C:\
IF EXIST C:\BOOT\BCD DEL C:\BOOT\BCD
IF NOT EXIST C:\TEMP MD C:\TEMP
IF EXIST C:\TEMP\BCD DEL C:\TEMP\BCD
bcdedit -createstore C:\TEMP\BCD
bcdedit -store C:\TEMP\BCD -create {bootmgr} /d "Boot Manager"
bcdedit -store C:\TEMP\BCD -set {bootmgr} device boot
bcdedit -store C:\TEMP\BCD -create {ramdiskoptions} /d "WinPE"
bcdedit -import C:\TEMP\BCD
bcdedit -set {ramdiskoptions} ramdisksdidevice partition=C:
bcdedit -set {ramdiskoptions} ramdisksdipath \BOOT\BOOT.sdi
for /f "tokens=3" %%a in ('bcdedit -create /d "WinPE" -application osloader') do set guid=%%a
bcdedit -set %guid% device ramdisk=[C:]\WINPE\WINPE.WIM,{ramdiskoptions}
bcdedit -set %guid% path \WINDOWS\SYSTEM32\BOOT\WINLOAD.EXE
bcdedit -set %guid% osdevice ramdisk=[C:]\WINPE\WINPE.WIM,{ramdiskoptions}
bcdedit -set %guid% systemroot \WINDOWS
bcdedit -set %guid% winpe yes
bcdedit -set %guid% detecthal yes
bcdedit -displayorder %guid% -addlast
bcdedit -create {ntldr} /d "Windows XP Professional"
bcdedit -set {ntldr} device boot
bcdedit -set {ntldr} path \ntldr
bcdedit -displayorder {ntldr} -addfirst
bcdedit -default {ntldr}
bcdedit -timeout 5
bootsect /nt60 C:
copy D:\BOOTMGR C:\
IF EXIST C:\BOOT\BCD DEL C:\BOOT\BCD
IF NOT EXIST C:\TEMP MD C:\TEMP
IF EXIST C:\TEMP\BCD DEL C:\TEMP\BCD
bcdedit -createstore C:\TEMP\BCD
bcdedit -store C:\TEMP\BCD -create {bootmgr} /d "Boot Manager"
bcdedit -store C:\TEMP\BCD -set {bootmgr} device boot
bcdedit -store C:\TEMP\BCD -create {ramdiskoptions} /d "WinPE"
bcdedit -import C:\TEMP\BCD
bcdedit -set {ramdiskoptions} ramdisksdidevice partition=C:
bcdedit -set {ramdiskoptions} ramdisksdipath \BOOT\BOOT.sdi
for /f "tokens=3" %%a in ('bcdedit -create /d "WinPE" -application osloader') do set guid=%%a
bcdedit -set %guid% device ramdisk=[C:]\WINPE\WINPE.WIM,{ramdiskoptions}
bcdedit -set %guid% path \WINDOWS\SYSTEM32\BOOT\WINLOAD.EXE
bcdedit -set %guid% osdevice ramdisk=[C:]\WINPE\WINPE.WIM,{ramdiskoptions}
bcdedit -set %guid% systemroot \WINDOWS
bcdedit -set %guid% winpe yes
bcdedit -set %guid% detecthal yes
bcdedit -displayorder %guid% -addlast
bcdedit -create {ntldr} /d "Windows XP Professional"
bcdedit -set {ntldr} device boot
bcdedit -set {ntldr} path \ntldr
bcdedit -displayorder {ntldr} -addfirst
bcdedit -default {ntldr}
bcdedit -timeout 5
bootsect /nt60 C:
If anyone has any suggestions, it would be greatly appreciated! Thanks.