Microsoft cloud engineer - SharePoint, Office 365, Azure, DotNet, Angular, JavaScript.
Microsoft cloud engineer - SharePoint, Office 365, Azure, DotNet, Angular, JavaScript.


Moving .VHD from Hyper-V to Virtual PC 2007 (HAL.DLL replace)

Why would anyone want to do this?   Am I crazy?   Probably, but that’s beside the point.  Hyper-V is amazing and super fast technology that I cannot get enough of.  I formatted my new laptop the day I bought it just so I could run Windows Server 2008 with Hyper-V and never looked back.

So why downgrade to Virtual PC 2007?

  • Backward compatibility for older VM hosts like Virtual PC 2007
  • Allows you to distribute easily for any user to boot
  • Wide compatibility with Windows XP, Vista, etc.
  • It’s just good manners to share in formats people can readily use

I won’t pretend I discovered this on my own and sources are cited at the footer.   My goal is to record the trick and share with others who may do similar VHD migration work.    There are two key changes to execute:  removing the Integration Services and replacing HAL.DLL

  1. Make a copy of the original VHD – Don’t you always?   Backups, backups, backups …
  2. Open Hyper-V MMC and Import the VHD
  3. Boot and install Integration Services
  4. … {enjoy using Hyper-V and adding cool new stuff over time} …
  5. Make a full VHD duplicate copy.   Maybe name it with a “CLEAN” suffix?
  6. Open Hyper-V MMC and Import the duplicate VHD
  7. Boot this and uninstall Integration Services from Add Remove Programs
  8. Shutdown the virtual guest
  9. You’ll need HAL.DLL from the original in #1 from before it went into Hyper-V mode.   This clean HAL.DLL is key to making the VHD boot into older systems like Virtual PC 2007.
  10. Use “VHDMOUNT.EXE /M {file name}” to mount the duplicate VHD file from #5
  11. Open Disk Management MMC and locate the new mounted drive letter
  12. Browse to C:WindowsSystem32HAL.DLL and rename to HAL.HPV.DLL
  13. Copy the clean HAL.DLL into C:WindowsSystem32
  14. Use “VHDMOUNT.EXE /U /C All”  to commit changes and save the VHD
  15. You’re ready to give this VHD file to anyone and they can easily boot it on 32-bit Windows XP with Virtual PC or whatever older VM host they like.

For completeness I must explain that when you first start up in Hyper-V the HAL.DLL layer is changed to give it that gorgeous direct hardware access that makes it run so incredibly fast.  But wait … my friends don’t have that … so it won’t boot on Virtual PC anymore.  Whoops!   That’s the whole challenge we’re trying to work around here.    What is VHDMOUNT.EXE you might ask?   A really cool utility that ships with Virtual Server 2005.    I personally don’t use Virtual Server 2005 directly (Hyper-V is faster) but keep it around anyway because of the helpful utilities that are part of the install folder.  Lastly,  I have included the Windows Server 2003 Enterprise Edition HAL.DLL file from two flavors:

Windows Server 2003 Enterprise Edition – Hyper-V flavor  (HAL.HPV.DLL)

Windows Server 2003 Enterprise Edition – Virtual PC flavor  (HAL.VPC.DLL)



Sources Cited:

CJG – Chris Givens – Migrating Hyper-V back to VPC! – Hal.dll

Renaming a View – Best Practice

When renaming SharePoint views users are often stuck with the unintended side effects of having both an internal file name and external display name.   If understood and managed properly this can be an advantage (not a bug).   A short simple internal name can provide a concise URL while longer display names can provide end user navigation and context.



ASPX file name

Shows in Designer, Explorer, URL bar, and other technical views


String display for navigation

Shows in navigation bar, HTML display title, MS Office clients, and other end user views


The Internal name is set at creation time and cannot be easily changed later.  So, the next time you make a new view try to use a short name first then come back and rename to something longer immediately after.   This way you get the best of both worlds:  a short URL and a longer more descriptive navigation link. 







Steve Ballmer and I at #SPC09

During the SharePoint 2010 conference I had the distinct honor of personally meeting and having photos taken with Microsoft CEO Steve Ballmer.  Wow!  I am still amazed.  Here’s the story.  Emily and I planned a reception for Saturday October 24.   I later learned of the conference and dates.  Since we were going to be in Las Vegas the week before it was fate  … we had to get married by Elvis at the Viva Las Vegas wedding chapel.   So we did.   When word of our plans got around Twitter and to the conference organizers they arranged for us to have a special backstage photo op after the opening keynote speech Monday October 19th.   We were even mentioned in the press in a Computer World article titled “SharePoint guru adds wedding, Elvis into conference schedule”.    I did a Google News search on my name and Steve Ballmer and got this one hit.   Never thought that would happen.

Really cool things that happened this week:

  • SharePoint 2010 was released
  • We met Steve Ballmer
  • Emily and I got married
  • … by Elvis
  • I met many new Twitter friends in person
  • I saw many old friends again
  • Our room was upgraded to a top floor honeymoon suite with flowers, chocolate, and champagne (awesome!)
  • Windows 7 and Server 2008 R2 were released

I’ve only been married for three days but can easily say it’s the coolest thing I’ve ever done. 


      Woohoo!!!   I’ll never forget this week.   For all you single extra geeky Twitter-tee wearing dudes out there I highly recommend finding an amazing, caring, fun woman to spend your life with and then climbing up on the roof top to shout it out.   Other geeks are very supportive, encouraging, and just downright fun when it comes to helping you celebrate.    The whole trip feels like a dream and was so much better than anything I could have imagined.


SPC 2009
SPC 2009
SPC 2009
SPC 2009
SPC 2009
SPC 2009

Extracting hyperlink destinations from Excel (Document Library item URLs)

I recently needed the destination URL for several hundred items across layers of nested folders in a giant SharePoint Document Library.    Right clicking with “copy link location” just wasn’t going to work here.   The datasheet view, Excel, and Access all came to mind as possible tools.   In then end a quick Excel UDF (User Defined Function) helped get the job done.   This is easily done against SharePoint Document Libraries because the default Title column links to the file item URL.

  1. Choose “Export to Spreadsheet” from your document library
  2. Open the .IQY file when prompted
  3. Press Alt+F11, then Insert > Module
  4. Paste in this code:
  5. Save the workbook.   Note:  You might be prompted to save as XLSM for a macro enabled workbook, change the file type, and save.
  6. Use the =getaddress(cell) function to see the URLs  (screenshots below)





Sources Cited

Function GetAddress(HyperlinkCell As Range)

    GetAddress = Replace _

    (HyperlinkCell.Hyperlinks(1).Address, "mailto:", "")

End Function

© Copyright 2016
@ SPJeff

Return to Top ▲Return to Top ▲