<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://blogs.msdn.com/utility/FeedStylesheets/atom.xsl" media="screen"?><feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en-US"><title type="html">Virtual PC Guy's WebLog</title><subtitle type="html">Talking about virtualization at Microsoft (Virtual PC, Virtual Server and Windows virtualization).</subtitle><id>http://blogs.msdn.com/virtual_pc_guy/atom.xml</id><link rel="alternate" type="text/html" href="http://blogs.msdn.com/virtual_pc_guy/default.aspx" /><link rel="self" type="application/atom+xml" href="http://blogs.msdn.com/virtual_pc_guy/atom.xml" /><generator uri="http://communityserver.org" version="2.1.61025.2">Community Server</generator><updated>2009-10-16T11:20:52Z</updated><entry><title>Updated Hyper-V Monitor Gadget Now Available</title><link rel="alternate" type="text/html" href="http://blogs.msdn.com/virtual_pc_guy/archive/2009/11/30/updated-hyper-v-monitor-gadget-now-available.aspx" /><id>http://blogs.msdn.com/virtual_pc_guy/archive/2009/11/30/updated-hyper-v-monitor-gadget-now-available.aspx</id><published>2009-12-01T07:34:21Z</published><updated>2009-12-01T07:34:21Z</updated><content type="html">&lt;p&gt;&lt;img style="border-bottom: 0px; border-left: 0px; margin: 5px 5px 5px 0px; display: inline; border-top: 0px; border-right: 0px" title="Capture" border="0" alt="Capture" align="right" src="http://blogs.msdn.com/blogfiles/virtual_pc_guy/WindowsLiveWriter/UpdatedHyperVMonitorGadgetNowAvailable_148FC/Capture_1.png" width="201" height="189" /&gt;Tore Lervik has released an updated version of his fantastic Hyper-V Monitor Gadget.&amp;#160; New features in this release include:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Neat little CPU graph for running virtual machines&lt;/li&gt;    &lt;li&gt;Option to use Remote Desktop to connect to running virtual machines&lt;/li&gt;    &lt;li&gt;Support for turning on / shutting down a remote Hyper-V server using Wake-On-LAN&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;If you have not tried this tool out, you should go and grab a copy from here: &lt;a title="http://mindre.net/post/Hyper-V-Monitor-Gadget-for-Windows-Sidebar.aspx" href="http://mindre.net/post/Hyper-V-Monitor-Gadget-for-Windows-Sidebar.aspx"&gt;http://mindre.net/post/Hyper-V-Monitor-Gadget-for-Windows-Sidebar.aspx&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Cheers,   &lt;br /&gt;Ben    &lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9930621" width="1" height="1"&gt;</content><author><name>Virtual PC Guy</name><uri>http://blogs.msdn.com/members/Virtual+PC+Guy.aspx</uri></author><category term="Hyper-V" scheme="http://blogs.msdn.com/virtual_pc_guy/archive/tags/Hyper-V/default.aspx" /></entry><entry><title>Hyper-V and Domain Controllers – Demo Tips and Tricks</title><link rel="alternate" type="text/html" href="http://blogs.msdn.com/virtual_pc_guy/archive/2009/11/20/hyper-v-and-domain-controllers-demo-tips-and-tricks.aspx" /><id>http://blogs.msdn.com/virtual_pc_guy/archive/2009/11/20/hyper-v-and-domain-controllers-demo-tips-and-tricks.aspx</id><published>2009-11-21T07:42:00Z</published><updated>2009-11-21T07:42:00Z</updated><content type="html">&lt;P&gt;In the past I have talked about the different configuration options when running &lt;A href="http://blogs.msdn.com/virtual_pc_guy/archive/2008/11/24/the-domain-controller-dilemma.aspx" target=_blank mce_href="http://blogs.msdn.com/virtual_pc_guy/archive/2008/11/24/the-domain-controller-dilemma.aspx"&gt;Domain Controllers and Hyper-V&lt;/A&gt;.&amp;nbsp; One of the more interesting configurations I discussed then was having a Hyper-V server joined to a domain where the domain controller was a virtual machine running on the same instance of Hyper-V.&lt;/P&gt;
&lt;P&gt;This is actually a configuration I use all of the time when I am doing public demonstrations.&amp;nbsp; The reason why I do this is because:&lt;/P&gt;
&lt;OL&gt;
&lt;LI&gt;I do not like to ship hardware – as I have had hardware get damaged in shipping too many times. &lt;/LI&gt;
&lt;LI&gt;I do not trust networking in a demo environment – so if I can keep it all on one computer, I will. &lt;/LI&gt;
&lt;LI&gt;I often have to demonstrate software / configurations that need a domain controller. &lt;/LI&gt;&lt;/OL&gt;
&lt;P&gt;This all means that I need to have a domain controller in a virtual machine on my laptop.&lt;/P&gt;
&lt;P&gt;Over the course of many demos – I have gleaned a few interesting tips and tricks for this sort of configuration.&lt;/P&gt;
&lt;P&gt;One of the biggest differences (for me) about doing this on my laptop, is that I need to system to be able to boot quickly and reliably.&amp;nbsp; Often when speaking publicly – I only get to take the stage about 10 minutes prior to speaking.&amp;nbsp; I need to be able to boot my whole system and be confident that my demo is going to work in under 10 minutes.&lt;/P&gt;
&lt;P&gt;Sometimes I also need to run my PowerPoint presentation on the same laptop – so make that 8 minutes to “up and running”.&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Tip #1 – Disable the use of cached credentials&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;Normally, if you have a computer joined to a domain and you try to login when no connection to the domain controller is present- you will be able to log in successfully.&amp;nbsp; The reason why this works is because Windows allows you to use a locally cached copy of your domain credentials.&lt;/P&gt;
&lt;P&gt;Unfortunately – this can be a problem in a demo environment.&amp;nbsp; Imagine this scenario:&lt;/P&gt;
&lt;BLOCKQUOTE&gt;
&lt;P&gt;&lt;EM&gt;You have your demo all setup and ready to go, you pack up your laptop and head out to where you are going to be presenting.&amp;nbsp; Once there you boot your laptop, login, and start the presentation.&amp;nbsp; 20 minutes in – it is time for your demo.&amp;nbsp; You switch from PowerPoint and start to do the demo – only to find that none of your server virtual machines are authenticating with each other!&amp;nbsp; After a few minutes of nervous muttering – you realize that the domain controller never started.&amp;nbsp; By this time – your demo is pretty much ruined and you have to abandon the whole thing.&lt;/EM&gt;&lt;/P&gt;&lt;/BLOCKQUOTE&gt;
&lt;P&gt;Yup,&amp;nbsp; I have had this happen to me.&amp;nbsp; That is why I like to disable the use of cached credentials.&amp;nbsp; This way I am immediately alerted of problems with my domain environment – and know that if I was able to login – then everything is fine.&amp;nbsp; Of course, if you are going to do this you need to be extra careful to have a local administrator account ready to go if there is a problem to fix.&lt;/P&gt;
&lt;P&gt;You can disabled the use of cached credentials by going to the client computer (your physical computer / management operating system in this case), opening REGEDIT.EXE and locating this registry key: &lt;STRONG&gt;HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon&lt;/STRONG&gt;.&amp;nbsp; Then you want to find the entry called &lt;STRONG&gt;cachedlogonscount&lt;/STRONG&gt; and change it to &lt;STRONG&gt;0&lt;/STRONG&gt;.&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Tip #2 – Avoid huge delays by fixing the DNS up when the Domain Controller Starts&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;I have wrestled with this one for a while, as I know many of you have.&amp;nbsp; When you restart your domain controller it seems to take &lt;STRONG&gt;*for ever*&lt;/STRONG&gt; before it will let you authenticate from a remote computer.&amp;nbsp; I timed my standard demo environment (without the change that I am about to discuss) and it would often take longer than 10 minutes from system boot to being able to login to the domain.&amp;nbsp; Clearly this is a big issue for me when I am up on stage and trying to get my demo up and running quickly.&amp;nbsp; But I have also been frustrated by this is my home server setup as well.&amp;nbsp; After a bit of digging – I discovered that the cause of this delay is because the domain controller is not registered correctly with the domain name services server (DNS).&amp;nbsp; As I have a small setup I usually create a single virtual machine that contains the domain controller, DNS server and DHCP server.&lt;/P&gt;
&lt;P&gt;In this configuration – the DNS server comes up after the domain controller – and does not have the registration information from the domain controller.&amp;nbsp; When a domain controller fails to register itself with a DNS server, two things happen:&lt;/P&gt;
&lt;OL&gt;
&lt;LI&gt;No one is able to find the domain controller&lt;/LI&gt;
&lt;LI&gt;The domain controller waits about 10 minutes before trying to re-register itself with the DNS server&lt;/LI&gt;&lt;/OL&gt;
&lt;P&gt;So the trick is to try and get re-registration to happen quicker.&lt;/P&gt;
&lt;P&gt;The way I do this is by creating a batch file (which I call “FixDNS.CMD”) the contents of this batch file is as follows:&lt;/P&gt;
&lt;DIV style="BORDER-BOTTOM: silver 1px solid; TEXT-ALIGN: left; BORDER-LEFT: silver 1px solid; PADDING-BOTTOM: 4px; LINE-HEIGHT: 12pt; BACKGROUND-COLOR: #f4f4f4; MARGIN: 20px 0px 10px; PADDING-LEFT: 4px; WIDTH: 97.5%; PADDING-RIGHT: 4px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; MAX-HEIGHT: 200px; FONT-SIZE: 8pt; OVERFLOW: auto; BORDER-TOP: silver 1px solid; CURSOR: text; BORDER-RIGHT: silver 1px solid; PADDING-TOP: 4px" id=codeSnippetWrapper&gt;
&lt;DIV style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px" id=codeSnippet&gt;&lt;PRE style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"&gt;ipconfig /flushdns&lt;/PRE&gt;&lt;!--CRLF--&gt;&lt;PRE style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"&gt;ipconfig /registerdns&lt;/PRE&gt;&lt;!--CRLF--&gt;&lt;PRE style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"&gt;nltest /dsregdns&lt;/PRE&gt;&lt;!--CRLF--&gt;&lt;/DIV&gt;&lt;/DIV&gt;
&lt;P mce_keep="true"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;The “ipconfig” commands ensure that all is correct with the DNS settings and the “nltest” command does the work to register the domain controller with the DNS server.&lt;/P&gt;
&lt;P&gt;I then use task scheduler to run this batch file “At system startup”.&amp;nbsp; I have it configured to run without needing a user to log in, and have it run as a domain administrator account:&lt;/P&gt;
&lt;P&gt;&lt;A href="http://blogs.msdn.com/blogfiles/virtual_pc_guy/WindowsLiveWriter/HyperVandDomainControllersDemoTipsandTri_7BF0/Untitled4_2.png" target=_blank mce_href="http://blogs.msdn.com/blogfiles/virtual_pc_guy/WindowsLiveWriter/HyperVandDomainControllersDemoTipsandTri_7BF0/Untitled4_2.png"&gt;&lt;IMG style="BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; DISPLAY: inline; BORDER-TOP: 0px; BORDER-RIGHT: 0px" title=Untitled4 border=0 alt=Untitled4 src="http://blogs.msdn.com/blogfiles/virtual_pc_guy/WindowsLiveWriter/HyperVandDomainControllersDemoTipsandTri_7BF0/Untitled4_thumb.png" width=330 height=248 mce_src="http://blogs.msdn.com/blogfiles/virtual_pc_guy/WindowsLiveWriter/HyperVandDomainControllersDemoTipsandTri_7BF0/Untitled4_thumb.png"&gt;&lt;/A&gt; &lt;/P&gt;
&lt;P&gt;The result of these changes is that my laptop is able to boot and login to the domain controller in under 4 minutes.&amp;nbsp; Handy!&lt;/P&gt;
&lt;P&gt;Well, that is it for today.&amp;nbsp; Hopefully these tips and tricks will help you out some day.&lt;/P&gt;
&lt;P&gt;Cheers, &lt;BR&gt;Ben&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9926682" width="1" height="1"&gt;</content><author><name>Virtual PC Guy</name><uri>http://blogs.msdn.com/members/Virtual+PC+Guy.aspx</uri></author><category term="Hyper-V" scheme="http://blogs.msdn.com/virtual_pc_guy/archive/tags/Hyper-V/default.aspx" /></entry><entry><title>Booting Hyper-V R2 off a USB stick</title><link rel="alternate" type="text/html" href="http://blogs.msdn.com/virtual_pc_guy/archive/2009/11/18/booting-hyper-v-r2-off-a-usb-stick.aspx" /><id>http://blogs.msdn.com/virtual_pc_guy/archive/2009/11/18/booting-hyper-v-r2-off-a-usb-stick.aspx</id><published>2009-11-18T17:53:39Z</published><updated>2009-11-18T17:53:39Z</updated><content type="html">&lt;p&gt;A while ago we announced that Microsoft Hyper-V Server R2 would support booting off of a USB flash device.&amp;#160; We have now provided detailed documentation on how to set this up.&amp;#160; Even cooler than booting Hyper-V off of a USB device – is the fact that what we are doing is booting a VHD with Hyper-V installed on it off of a USB device:&lt;/p&gt;  &lt;p&gt;&lt;a title="http://technet.microsoft.com/en-us/library/ee731893(WS.10).aspx" href="http://technet.microsoft.com/en-us/library/ee731893(WS.10).aspx"&gt;http://technet.microsoft.com/en-us/library/ee731893(WS.10).aspx&lt;/a&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;If you are like me – you will probably think: “Cool! I have to check that out!” And then after looking over that page you will think: “Eh, that seems like a lot of work…”&lt;/p&gt;  &lt;p&gt;Thankfully Paul Despe has made a little tool that makes this dead simple.&amp;#160; You can grab it from here:&lt;/p&gt;  &lt;p&gt;&lt;a title="http://code.msdn.microsoft.com/BootHVSR2FromUSB" href="http://code.msdn.microsoft.com/BootHVSR2FromUSB"&gt;http://code.msdn.microsoft.com/BootHVSR2FromUSB&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;With this tool all you have to do is:&lt;/p&gt;  &lt;ol&gt;   &lt;li&gt;Install the Windows Automated Installation Kit (WAIK) &lt;/li&gt;    &lt;li&gt;Grab Microsoft Hyper-V Server 2008 R2 and either burn it to a DVD or mount it with a virtual CD program &lt;/li&gt;    &lt;li&gt;Connect your USB flash device &lt;/li&gt;    &lt;li&gt;Run the tool &lt;strong&gt;As Administrator&lt;/strong&gt; &lt;/li&gt;    &lt;li&gt;Select your USB flash device as your target disk      &lt;ol&gt;       &lt;li&gt;Warning! You can select any disk in your system – and it will get formatted.&amp;#160; Make sure you are selecting your USB flash disk – and you do not have any data on the disk that you want to keep. &lt;/li&gt;     &lt;/ol&gt;   &lt;/li&gt;    &lt;li&gt;Click on the &lt;strong&gt;Create Blank VHD&lt;/strong&gt; button and choose a temporary location for the VHD &lt;/li&gt;    &lt;li&gt;Locate your copy of the INSTALL.WIM file from the Microsoft Hyper-V Server 2008 R2 &lt;/li&gt;    &lt;li&gt;Hit the &lt;strong&gt;Start&lt;/strong&gt; button and wait a short time (~30 minutes on my system) for everything to be setup &lt;/li&gt; &lt;/ol&gt;  &lt;p&gt;When it is finished you can now take your USB flash disk and boot a system off of it.&amp;#160; Once you have completed the standard Hyper-V Server post installation configuration – you can connect to the system remotely and start partying with Hyper-V.&lt;/p&gt;  &lt;p&gt;You may be wondering why we are letting you do this.&amp;#160; Well that is captured at the top of the TechNet article, to quote:&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;em&gt;… The scenario described in this document is only supported for original equipment manufacturers (OEM) … &lt;/em&gt;&lt;/p&gt;    &lt;p&gt;&lt;em&gt;… A Hyper-V Server UFD can provide virtualization capability for servers that ship with no local hard disks, and it offers the same functionality and flexibility as a Hyper-V Server installation on a physical hard-drive …&lt;/em&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;The idea here is that OEMs / System Builders that want to make diskless Hyper-V servers (where the virtual machines are stored on some form of central storage) can do so by sticking some cheap flash storage on the disk.&lt;/p&gt;  &lt;p&gt;Myself, I just like the idea of having a Hyper-V server with me ready to go at anytime &lt;img class="wlEmoticon wlEmoticon-smile" alt="Smile" src="http://blogs.msdn.com/blogfiles/virtual_pc_guy/WindowsLiveWriter/BootingHyperVR2_14A72/wlEmoticon-smile_2.png" /&gt;&lt;/p&gt;  &lt;p&gt;Some notes to be aware of include:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;This is only supported for Microsoft Hyper-V Server 2008 R2.&amp;#160; Not for Windows Server 2008 R2. &lt;/li&gt;    &lt;li&gt;It is recommended that your USB flash disk be at least 8GB in size, and that you only fill your disk up to 75% to get the best performance / life span.      &lt;ul&gt;       &lt;li&gt;For this reason Paul's tool defaults to creating a 6000MB virtual hard disk.&amp;#160; You can change the size of the virtual hard disk using the &lt;strong&gt;File&lt;/strong&gt; menu. &lt;/li&gt;     &lt;/ul&gt;   &lt;/li&gt;    &lt;li&gt;While you can move the USB device from system to system and *most* things will work:      &lt;ul&gt;       &lt;li&gt;This is not supported (if you read the whole TechNet article you will see that this is only supported if you are using a USB device that is hard-wired to the system). &lt;/li&gt;        &lt;li&gt;The virtual network switches will get disconnected whenever you move to a new system. &lt;/li&gt;     &lt;/ul&gt;   &lt;/li&gt;    &lt;li&gt;To reduce wear-and-tear on your flash device, the page file is disabled by this tool.&amp;#160; This means that you should not try and allocate every last megabyte in the system to virtual machines.&amp;#160; Try to leave some room for processes in the parent partition. &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;As a final note – I did not have an 8GB flash device handy for testing this out – so I actually set this up using my PlayStation Portable (PSP).&amp;#160; And it works!&amp;#160; Now I just have to figure out how to keep Hyper-V on my PSP and still use it for playing games.&lt;/p&gt;  &lt;p&gt;Cheers,   &lt;br /&gt;Ben&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9924429" width="1" height="1"&gt;</content><author><name>Virtual PC Guy</name><uri>http://blogs.msdn.com/members/Virtual+PC+Guy.aspx</uri></author><category term="Hyper-V" scheme="http://blogs.msdn.com/virtual_pc_guy/archive/tags/Hyper-V/default.aspx" /></entry><entry><title>Understanding High-End Video Performance Issues with Hyper-V</title><link rel="alternate" type="text/html" href="http://blogs.msdn.com/virtual_pc_guy/archive/2009/11/16/understanding-high-end-video-performance-issues-with-hyper-v.aspx" /><id>http://blogs.msdn.com/virtual_pc_guy/archive/2009/11/16/understanding-high-end-video-performance-issues-with-hyper-v.aspx</id><published>2009-11-17T07:39:21Z</published><updated>2009-11-17T07:39:21Z</updated><content type="html">&lt;p&gt;A while ago I wrote a relatively short &lt;a href="http://blogs.msdn.com/virtual_pc_guy/archive/2009/01/07/bad-performance-with-high-end-graphics-and-hyper-v.aspx" target="_blank"&gt;blog post&lt;/a&gt; high-lighting the fact that there are performance issues with Hyper-V when used with a high-end graphics adapter.&amp;#160; Since then I have been inundated with people asking questions and trying to get their heads around this issue.&amp;#160; Today I would like to take a chance to drill in on this:&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;u&gt;What is the cause of the problem?&lt;/u&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;Okay – let’s grab the pertinent text from the original KB article:&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;em&gt;This issue occurs when a device driver or other kernel mode component makes frequent memory allocations by using the &lt;b&gt;PAGE_WRITECOMBINE&lt;/b&gt; protection flag set while the hypervisor is running. When the kernel memory manager allocates memory by using the &lt;b&gt;WRITECOMBINE&lt;/b&gt; attribute, the kernel memory manager must flush the Translation Lookaside Buffer (TLB) and the cache for the specific page. However, when the Hyper-V role is enabled, the TLB is virtualized by the hypervisor. Therefore, every TLB flush sends an intercept into the hypervisor. This intercept instructs the hypervisor to flush the virtual TLB. This is an expensive operation that introduces a fixed overhead cost to virtualization. Usually, this is an infrequent event in supported virtualization scenarios. However, some video graphics drivers may cause this operation to occur very frequently during certain operations. This significantly magnifies the overhead in the hypervisor.&lt;/em&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;Usually when I talk to people about this – their eyes start to gloss over – so let’s dig in a little here.&amp;#160; With the help of Wikipedia we can get some definitions here:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Write-combining (&lt;a title="http://en.wikipedia.org/wiki/Write-combining" href="http://en.wikipedia.org/wiki/Write-combining"&gt;http://en.wikipedia.org/wiki/Write-combining&lt;/a&gt;):       &lt;br /&gt;      &lt;br /&gt;&lt;em&gt;&lt;strong&gt;Write combining (WC)&lt;/strong&gt; is a computer bus technique for allowing data to be combined and temporarily stored in a buffer -- the write combine buffer (WCB) -- to be released together later in burst mode instead of writing (immediately) as single bits or small chunks. &lt;/em&gt;      &lt;p&gt;&lt;em&gt;Write combining cannot be used for general memory access (data or code regions) due to the 'weak ordering'. Write-combining does not guarantee that the combination of writes and reads is done in the correct order. For example, a Write/Read/Write combination to a specific address would lead to the write combining order of Read/Write/Write which can lead to obtaining wrong values with the first read (which potentially relies on the write before). &lt;/em&gt;&lt;/p&gt;      &lt;p&gt;&lt;em&gt;In order to avoid the problem of read/write order described above, the write buffer can be treated as a fully-associative cache and added into the memory hierarchy of the device in which it is implemented. Adding complexity slows down the memory hierarchy so this technique is often only used for memory which does not need 'strong ordering' (always correct) like the frame buffers of video cards.          &lt;br /&gt;&lt;/em&gt;        &lt;br /&gt;In summary, write-combining is a method of accessing memory that is typically only used by video cards.&lt;/p&gt;   &lt;/li&gt;    &lt;li&gt;Translation Lookaside Buffer (TLB) (&lt;a title="http://en.wikipedia.org/wiki/Translation_Lookaside_Buffer" href="http://en.wikipedia.org/wiki/Translation_Lookaside_Buffer"&gt;http://en.wikipedia.org/wiki/Translation_Lookaside_Buffer&lt;/a&gt;)       &lt;br /&gt;      &lt;br /&gt;&lt;em&gt;A &lt;b&gt;Translation lookaside buffer&lt;/b&gt; (&lt;b&gt;TLB&lt;/b&gt;) is a CPU cache that memory management hardware uses to improve virtual address translation speed. It was the first cache introduced in processors. All current desktop and server processors (such as x86) use a TLB. A TLB has a fixed number of slots that contain page table entries, which map virtual addresses to physical addresses. It is typically a content-addressable memory (CAM), in which the search key is the virtual address and the search result is a physical address. If the requested address is present in the TLB, the CAM search yields a match quickly, after which the physical address can be used to access memory. This is called a TLB hit. If the requested address is not in the TLB, the translation proceeds by looking up the page table in a process called a page walk. The page walk is a high latency process, as it involves reading the contents of multiple memory locations and using them to compute the physical address. Furthermore, the page walk takes significantly longer if the translation tables are swapped out into secondary storage, which a few systems allow. After the physical address is determined, the virtual address to physical address mapping and the protection bits are entered in the TLB.&lt;/em&gt;       &lt;br /&gt;      &lt;br /&gt;So the TLB is a CPU cache that helps with translation between virtual address spaces and physical address.&amp;#160; Note that these virtual address spaces have nothing to do with virtual machines – but are used to allow multiple applications on an operating system to be isolated from each other. &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;Summarizing all of this – video card drivers tend to use memory access methods that cause Hyper-V to need to clear out the CPU cache for memory page table mapping a lot.&amp;#160; This is an expensive thing to do in Hyper-V at the best of times.&amp;#160; In fact – the above TLB article on Wikipedia even has a section on the problems of virtualization and the TLB.&lt;/p&gt;  &lt;p&gt;Now that we have the ground rules in place – let’s head on to some of the other questions.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;u&gt;How could you possibly ship Hyper-V with this issue?&amp;#160; Did you not test this product?&lt;/u&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;To answer the second question first – I actually was the first person (in the world) to hit this issue.&amp;#160; Early on in development I tried to use Hyper-V as my desktop OS on my home system with a GeForce 8800 video card.&amp;#160; Everything seemed to work okay (though some things were oddly sluggish) until I tried to pay Age of Empires III.&amp;#160; I had never played this game before, and the first time I tried to play it was on top of Hyper-V.&amp;#160; In short, it sucked.&amp;#160; Unfortunately I spent most of the weekend trying to tweak my rig and looking for patches to Age of Empires III before I thought to try disabling Hyper-V.&lt;/p&gt;  &lt;p&gt;As soon as I realized what was happening I filed a bug and the issue was investigated.&lt;/p&gt;  &lt;p&gt;When the issue was determined to be a specific result of the combination of the Hyper-V hypervisor and the Nvidia driver – we decided to leave things as they were for a couple of reasons:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Windows Server does not include any video drivers other than the SVGA driver by default &lt;/li&gt;    &lt;li&gt;Windows Server will not install a high-end video driver automatically at any stage – you need to manually install the Windows 7 drivers &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;Also, Hyper-V was being developed solely for server virtualization and:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;We have always recommended that nothing be run in the management operating system, other than basic management tools &lt;/li&gt;    &lt;li&gt;No server workload that we tested generated anywhere near the rate of TLB flushing that these video drivers cause &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;Finally, this is a really hard issue to address.&amp;#160; In fact, there are no hypervisor based virtualization platforms that addresses this issue today – and while there are several under development I suspect that they will either have specific hardware requirements (I will get to this later) or will have simplifications / limitations to help them mitigate this issue (like only having one virtual machine).&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;u&gt;Why does this affect Hyper-V and not Virtual PC?&lt;/u&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;Here we are seeing the difference between a hypervisor and a host VMM type solution.&amp;#160; With a hypervisor base platform (like Hyper-V) everything runs on top of the hypervisor – even the management operating system.&amp;#160; Where as with a hosted VMM platform (like Virtual PC) the host operating system still has direct access to the hardware.&amp;#160; To explain this better – here is a diagram:&lt;/p&gt;  &lt;p&gt;&lt;img style="border-right-width: 0px; margin: 5px 5px 5px 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="Drawing1" border="0" alt="Drawing1" src="http://blogs.msdn.com/blogfiles/virtual_pc_guy/WindowsLiveWriter/f2fe57bed3b3_12B92/Drawing1_3.png" width="614" height="326" /&gt;&lt;/p&gt;  &lt;p&gt;Hopefully you can see the difference here.&amp;#160; It should also be noted that all desktop virtualization products available today use an architecture similar to that of Virtual PC.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;u&gt;How do I know if this is affecting my computer?&lt;/u&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;To check if this is affecting your system – what you need to do is open Performance Monitor (you can do this by running “perfmon” from the start menu).&amp;#160; Select the &lt;strong&gt;Performance Monitor &lt;/strong&gt;node and click on the plus symbol to add a new counter.&amp;#160; Then find the &lt;strong&gt;Hyper-V Hypervisor Root Partition&lt;/strong&gt; entry, expand it, select &lt;strong&gt;Virtual TLB Flush Entries/sec&lt;/strong&gt; and add the &lt;strong&gt;Root&lt;/strong&gt; counter.&amp;#160; This will allow you to keep an eye on the rate of TLB flushing in the management operating system:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/virtual_pc_guy/WindowsLiveWriter/f2fe57bed3b3_12B92/Untitled_2.png"&gt;&lt;img style="border-right-width: 0px; margin: 5px 5px 5px 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="Untitled" border="0" alt="Untitled" src="http://blogs.msdn.com/blogfiles/virtual_pc_guy/WindowsLiveWriter/f2fe57bed3b3_12B92/Untitled_thumb.png" width="314" height="237" /&gt;&lt;/a&gt;&lt;a href="http://blogs.msdn.com/blogfiles/virtual_pc_guy/WindowsLiveWriter/f2fe57bed3b3_12B92/Untitled2_2.png"&gt;&lt;img style="border-right-width: 0px; margin: 5px 5px 5px 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="Untitled2" border="0" alt="Untitled2" src="http://blogs.msdn.com/blogfiles/virtual_pc_guy/WindowsLiveWriter/f2fe57bed3b3_12B92/Untitled2_thumb.png" width="314" height="233" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;So what do you look for now?&amp;#160; On my system – the only time I see a significant rate of TLB flushing (&amp;gt;10) is when I start a virtual machine.&amp;#160; A system that has this problem will either generate a continuous rate of TLB flushing above 100 or will generate spikes in the thousands.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;u&gt;What can I do to stop this / work around it?&lt;/u&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;There are a couple of options here:&lt;/p&gt;  &lt;ol&gt;   &lt;li&gt;&lt;strong&gt;Use the default video driver (SVGA).&lt;/strong&gt;       &lt;br /&gt;      &lt;br /&gt;Yes, I know it is not sexy or fun – but if you are planning to just use Hyper-V as a server virtualization platform this is your easiest and simplest option.&amp;#160; It is the way we intended Hyper-V to be used, and it will always give the best performance.       &lt;br /&gt;      &lt;br /&gt;&lt;/li&gt;    &lt;li&gt;&lt;strong&gt;Tone down the use of 3D graphics.&lt;/strong&gt;       &lt;br /&gt;      &lt;br /&gt;Some video cards (like the Nvidia Quadro FX 1700M) seem to work fine as long as Aero is not enabled and no 3D applications are running.&amp;#160; If I enable Aero I start to see a fairly frequent rate of spikes in my TLB flush count (which causes annoying lurches in the window animation).&amp;#160; Running a 3D game (like Halo 2) is just terrible.       &lt;br /&gt;      &lt;br /&gt;This means that for those of you who do not want the high-end driver for 3D graphics, but instead need it for multi-monitor support or for the ability to connect a projector to your laptop (like me) this may work.       &lt;br /&gt;      &lt;br /&gt;&lt;/li&gt;    &lt;li&gt;&lt;strong&gt;Choose your video card carefully.&lt;/strong&gt;       &lt;br /&gt;      &lt;br /&gt;As a general rule of thumb – the less capable the video card, the less likely this is to be an issue.&amp;#160; My previous laptop had an integrated graphics controller – which was terrible for gaming – but worked great for Hyper-V.&amp;#160; When I wanted to get my new laptop and found that there was no Intel option – I tracked down a coworker with a similar graphics card in their laptop and tried out Hyper-V on it before going ahead and buying it.       &lt;br /&gt;      &lt;br /&gt;&lt;/li&gt;    &lt;li&gt;&lt;strong&gt;Get a system with Second Level Address Translation (SLAT).&lt;/strong&gt;       &lt;br /&gt;      &lt;br /&gt;SLAT is a technology that goes by different names depending on whether you get Intel (where it is called “Extended Page Tables” (EPT)) or AMD (where it is called “Nested Page Tables” (NPT) or “Rapid Virtualization Indexing” (RVI)).&amp;#160; These technologies are an extension to the traditional TLB that allow us to use the hardware to handle multiple TLBs – one for each virtual machine.&amp;#160; We added support for this hardware in Windows Server 2008 R2.&amp;#160; If you run Windows Server 2008 R2 on a system with SLAT capabilities – you will not have any problems running 3D graphics at all.       &lt;br /&gt;      &lt;br /&gt;Intel started shipping this technology in the Nehalem (or core i7) processor line.&amp;#160; AMD has been shipping this for a while now – ever since generation 3 of the AMD Quad-core family.&amp;#160; Unfortunately neither have shipped this technology in the laptop processors yet – though Intel has indicated that they are planning to soon. &lt;/li&gt; &lt;/ol&gt;  &lt;p&gt;Hopefully this has answered all of your questions satisfactorily.&amp;#160; If you have any further questions – please feel free to ask away.&amp;#160; I would also encourage you that if you have a video card that appears to work well with Hyper-V and 3D graphics – post the details in the comments so that others can benefit from your good fortune!&lt;/p&gt;  &lt;p&gt;Cheers,    &lt;br /&gt;Ben&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9923423" width="1" height="1"&gt;</content><author><name>Virtual PC Guy</name><uri>http://blogs.msdn.com/members/Virtual+PC+Guy.aspx</uri></author><category term="Hyper-V" scheme="http://blogs.msdn.com/virtual_pc_guy/archive/tags/Hyper-V/default.aspx" /><category term="Windows Server 2008 R2" scheme="http://blogs.msdn.com/virtual_pc_guy/archive/tags/Windows+Server+2008+R2/default.aspx" /></entry><entry><title>Double click to mount a virtual hard disk (Windows 7 Style)</title><link rel="alternate" type="text/html" href="http://blogs.msdn.com/virtual_pc_guy/archive/2009/11/11/double-click-to-mount-a-virtual-hard-disk-windows-7-style.aspx" /><link rel="enclosure" type="application/x-zip-compressed" length="1433" href="http://blogs.msdn.com/virtual_pc_guy/attachment/9920711.ashx" /><id>http://blogs.msdn.com/virtual_pc_guy/archive/2009/11/11/double-click-to-mount-a-virtual-hard-disk-windows-7-style.aspx</id><published>2009-11-11T09:53:00Z</published><updated>2009-11-11T09:53:00Z</updated><content type="html">&lt;P&gt;I have been wanting to come up with a workable solution for mounting virtual hard disks by double clicking on them in Windows 7 for a while now.&amp;nbsp; The problem is that:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;There is no easily scriptable API for VHD mounting &lt;/LI&gt;
&lt;LI&gt;You need to be elevated (running “As Administrator”) in order to mount a virtual hard disk &lt;/LI&gt;&lt;/UL&gt;
&lt;P&gt;The best idea I could think of for a simple solution was to try scripting the DISKPART tool.&amp;nbsp; Unfortunately – once I got going I got a bit carried away.&amp;nbsp; The result is this batch file:&lt;/P&gt;
&lt;DIV style="BORDER-BOTTOM: silver 1px solid; TEXT-ALIGN: left; BORDER-LEFT: silver 1px solid; PADDING-BOTTOM: 4px; LINE-HEIGHT: 12pt; BACKGROUND-COLOR: #f4f4f4; MARGIN: 20px 0px 10px; PADDING-LEFT: 4px; WIDTH: 97.5%; PADDING-RIGHT: 4px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; MAX-HEIGHT: 20000px; FONT-SIZE: 8pt; OVERFLOW: auto; BORDER-TOP: silver 1px solid; CURSOR: text; BORDER-RIGHT: silver 1px solid; PADDING-TOP: 4px" id=codeSnippetWrapper&gt;
&lt;DIV style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px" id=codeSnippet&gt;&lt;PRE style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"&gt;@ECHO OFF&lt;/PRE&gt;&lt;!--CRLF--&gt;&lt;PRE style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"&gt;&amp;nbsp;&lt;/PRE&gt;&lt;!--CRLF--&gt;&lt;PRE style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"&gt;REM - This will be the file that I use for scripting&lt;/PRE&gt;&lt;!--CRLF--&gt;&lt;PRE style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"&gt;SET temporaryFileName=%temp%\VHDBatchTempFile_%random%.txt&lt;/PRE&gt;&lt;!--CRLF--&gt;&lt;PRE style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"&gt;&amp;nbsp;&lt;/PRE&gt;&lt;!--CRLF--&gt;&lt;PRE style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"&gt;REM - Parse the first parameter and go to the right lication&lt;/PRE&gt;&lt;!--CRLF--&gt;&lt;PRE style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"&gt;IF %1==mount GOTO:mount&lt;/PRE&gt;&lt;!--CRLF--&gt;&lt;PRE style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"&gt;IF %1==readOnlyMount GOTO:readOnlyMount&lt;/PRE&gt;&lt;!--CRLF--&gt;&lt;PRE style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"&gt;IF %1==dismount GOTO:dismount&lt;/PRE&gt;&lt;!--CRLF--&gt;&lt;PRE style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"&gt;IF %1==compact GOTO:compact&lt;/PRE&gt;&lt;!--CRLF--&gt;&lt;PRE style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"&gt;IF %1==install GOTO:install&lt;/PRE&gt;&lt;!--CRLF--&gt;&lt;PRE style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"&gt;IF %1==uninstall GOTO:uninstall&lt;/PRE&gt;&lt;!--CRLF--&gt;&lt;PRE style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"&gt;&amp;nbsp;&lt;/PRE&gt;&lt;!--CRLF--&gt;&lt;PRE style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"&gt;REM - Give a helpful error message if no parameter is recognized&lt;/PRE&gt;&lt;!--CRLF--&gt;&lt;PRE style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"&gt;GOTO:error&lt;/PRE&gt;&lt;!--CRLF--&gt;&lt;PRE style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"&gt;&amp;nbsp;&lt;/PRE&gt;&lt;!--CRLF--&gt;&lt;PRE style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"&gt;REM - Mounting a virtual hard disk&lt;/PRE&gt;&lt;!--CRLF--&gt;&lt;PRE style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"&gt;:mount&lt;/PRE&gt;&lt;!--CRLF--&gt;&lt;PRE style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"&gt;ECHO select vdisk file=%2 &lt;SPAN style="COLOR: #0000ff"&gt;&amp;gt;&lt;/SPAN&gt; %temporaryFileName%&lt;/PRE&gt;&lt;!--CRLF--&gt;&lt;PRE style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"&gt;ECHO attach vdisk &lt;SPAN style="COLOR: #0000ff"&gt;&amp;gt;&amp;gt;&lt;/SPAN&gt; %temporaryFileName%&lt;/PRE&gt;&lt;!--CRLF--&gt;&lt;PRE style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"&gt;diskpart /s %temporaryFileName%&lt;/PRE&gt;&lt;!--CRLF--&gt;&lt;PRE style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"&gt;del %temporaryFileName%&lt;/PRE&gt;&lt;!--CRLF--&gt;&lt;PRE style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"&gt;GOTO:EOF&lt;/PRE&gt;&lt;!--CRLF--&gt;&lt;PRE style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"&gt;&amp;nbsp;&lt;/PRE&gt;&lt;!--CRLF--&gt;&lt;PRE style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"&gt;REM - Mounting a virtual hard disk (read only)&lt;/PRE&gt;&lt;!--CRLF--&gt;&lt;PRE style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"&gt;:readOnlyMount&lt;/PRE&gt;&lt;!--CRLF--&gt;&lt;PRE style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"&gt;ECHO select vdisk file=%2 &lt;SPAN style="COLOR: #0000ff"&gt;&amp;gt;&lt;/SPAN&gt; %temporaryFileName%&lt;/PRE&gt;&lt;!--CRLF--&gt;&lt;PRE style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"&gt;ECHO attach vdisk readonly &lt;SPAN style="COLOR: #0000ff"&gt;&amp;gt;&amp;gt;&lt;/SPAN&gt; %temporaryFileName%&lt;/PRE&gt;&lt;!--CRLF--&gt;&lt;PRE style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"&gt;diskpart /s %temporaryFileName%&lt;/PRE&gt;&lt;!--CRLF--&gt;&lt;PRE style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"&gt;del %temporaryFileName%&lt;/PRE&gt;&lt;!--CRLF--&gt;&lt;PRE style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"&gt;GOTO:EOF&lt;/PRE&gt;&lt;!--CRLF--&gt;&lt;PRE style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"&gt;&amp;nbsp;&lt;/PRE&gt;&lt;!--CRLF--&gt;&lt;PRE style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"&gt;REM - Dismounting a virtual hard disk&lt;/PRE&gt;&lt;!--CRLF--&gt;&lt;PRE style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"&gt;:dismount&lt;/PRE&gt;&lt;!--CRLF--&gt;&lt;PRE style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"&gt;ECHO select vdisk file=%2 &lt;SPAN style="COLOR: #0000ff"&gt;&amp;gt;&lt;/SPAN&gt; %temporaryFileName%&lt;/PRE&gt;&lt;!--CRLF--&gt;&lt;PRE style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"&gt;ECHO detach vdisk &lt;SPAN style="COLOR: #0000ff"&gt;&amp;gt;&amp;gt;&lt;/SPAN&gt; %temporaryFileName%&lt;/PRE&gt;&lt;!--CRLF--&gt;&lt;PRE style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"&gt;diskpart /s %temporaryFileName%&lt;/PRE&gt;&lt;!--CRLF--&gt;&lt;PRE style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"&gt;del %temporaryFileName%&lt;/PRE&gt;&lt;!--CRLF--&gt;&lt;PRE style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"&gt;GOTO:EOF&lt;/PRE&gt;&lt;!--CRLF--&gt;&lt;PRE style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"&gt;&amp;nbsp;&lt;/PRE&gt;&lt;!--CRLF--&gt;&lt;PRE style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"&gt;REM - Compacting a virtual hard disk&lt;/PRE&gt;&lt;!--CRLF--&gt;&lt;PRE style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"&gt;:compact&lt;/PRE&gt;&lt;!--CRLF--&gt;&lt;PRE style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"&gt;ECHO select vdisk file=%2 &lt;SPAN style="COLOR: #0000ff"&gt;&amp;gt;&lt;/SPAN&gt; %temporaryFileName%&lt;/PRE&gt;&lt;!--CRLF--&gt;&lt;PRE style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"&gt;ECHO compact vdisk &lt;SPAN style="COLOR: #0000ff"&gt;&amp;gt;&amp;gt;&lt;/SPAN&gt; %temporaryFileName%&lt;/PRE&gt;&lt;!--CRLF--&gt;&lt;PRE style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"&gt;diskpart /s %temporaryFileName%&lt;/PRE&gt;&lt;!--CRLF--&gt;&lt;PRE style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"&gt;del %temporaryFileName%&lt;/PRE&gt;&lt;!--CRLF--&gt;&lt;PRE style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"&gt;GOTO:EOF&lt;/PRE&gt;&lt;!--CRLF--&gt;&lt;PRE style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"&gt;&amp;nbsp;&lt;/PRE&gt;&lt;!--CRLF--&gt;&lt;PRE style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"&gt;REM - Put registry keys in place &lt;/PRE&gt;&lt;!--CRLF--&gt;&lt;PRE style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"&gt;:install&lt;/PRE&gt;&lt;!--CRLF--&gt;&lt;PRE style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"&gt;&amp;nbsp;&lt;/PRE&gt;&lt;!--CRLF--&gt;&lt;PRE style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"&gt;SET temporaryFileName=%temporaryFileName:txt=reg%&lt;/PRE&gt;&lt;!--CRLF--&gt;&lt;PRE style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"&gt;&amp;nbsp;&lt;/PRE&gt;&lt;!--CRLF--&gt;&lt;PRE style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"&gt;SET batchFileName=%~f0&lt;/PRE&gt;&lt;!--CRLF--&gt;&lt;PRE style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"&gt;SET batchFileName=%batchFileName:\=\\%&lt;/PRE&gt;&lt;!--CRLF--&gt;&lt;PRE style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"&gt;&amp;nbsp;&lt;/PRE&gt;&lt;!--CRLF--&gt;&lt;PRE style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"&gt;ECHO Windows Registry Editor Version 5.00 &lt;SPAN style="COLOR: #0000ff"&gt;&amp;gt;&lt;/SPAN&gt; %temporaryFileName%&lt;/PRE&gt;&lt;!--CRLF--&gt;&lt;PRE style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"&gt;ECHO. &lt;SPAN style="COLOR: #0000ff"&gt;&amp;gt;&amp;gt;&lt;/SPAN&gt; %temporaryFileName%&lt;/PRE&gt;&lt;!--CRLF--&gt;&lt;PRE style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"&gt;ECHO [HKEY_CLASSES_ROOT\.vhd] &lt;SPAN style="COLOR: #0000ff"&gt;&amp;gt;&amp;gt;&lt;/SPAN&gt; %temporaryFileName%&lt;/PRE&gt;&lt;!--CRLF--&gt;&lt;PRE style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"&gt;ECHO @="Windows.VirtualPC.HD" &lt;SPAN style="COLOR: #0000ff"&gt;&amp;gt;&amp;gt;&lt;/SPAN&gt; %temporaryFileName%&lt;/PRE&gt;&lt;!--CRLF--&gt;&lt;PRE style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"&gt;ECHO. &lt;SPAN style="COLOR: #0000ff"&gt;&amp;gt;&amp;gt;&lt;/SPAN&gt; %temporaryFileName%&lt;/PRE&gt;&lt;!--CRLF--&gt;&lt;PRE style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"&gt;ECHO [HKEY_CLASSES_ROOT\.vhd\ShellEx] &lt;SPAN style="COLOR: #0000ff"&gt;&amp;gt;&amp;gt;&lt;/SPAN&gt; %temporaryFileName%&lt;/PRE&gt;&lt;!--CRLF--&gt;&lt;PRE style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"&gt;ECHO. &lt;SPAN style="COLOR: #0000ff"&gt;&amp;gt;&amp;gt;&lt;/SPAN&gt; %temporaryFileName%&lt;/PRE&gt;&lt;!--CRLF--&gt;&lt;PRE style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"&gt;ECHO [HKEY_CLASSES_ROOT\.vhd\ShellEx\ContextMenuHandlers] &lt;SPAN style="COLOR: #0000ff"&gt;&amp;gt;&amp;gt;&lt;/SPAN&gt; %temporaryFileName%&lt;/PRE&gt;&lt;!--CRLF--&gt;&lt;PRE style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"&gt;ECHO. &lt;SPAN style="COLOR: #0000ff"&gt;&amp;gt;&amp;gt;&lt;/SPAN&gt; %temporaryFileName%&lt;/PRE&gt;&lt;!--CRLF--&gt;&lt;PRE style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"&gt;ECHO [HKEY_CLASSES_ROOT\Windows.VirtualPC.HD] &lt;SPAN style="COLOR: #0000ff"&gt;&amp;gt;&amp;gt;&lt;/SPAN&gt; %temporaryFileName%&lt;/PRE&gt;&lt;!--CRLF--&gt;&lt;PRE style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"&gt;ECHO @="Virtual Machine Hard Drive Image" &lt;SPAN style="COLOR: #0000ff"&gt;&amp;gt;&amp;gt;&lt;/SPAN&gt; %temporaryFileName%&lt;/PRE&gt;&lt;!--CRLF--&gt;&lt;PRE style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"&gt;ECHO. &lt;SPAN style="COLOR: #0000ff"&gt;&amp;gt;&amp;gt;&lt;/SPAN&gt; %temporaryFileName%&lt;/PRE&gt;&lt;!--CRLF--&gt;&lt;PRE style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"&gt;ECHO [HKEY_CLASSES_ROOT\Windows.VirtualPC.HD\ShellEx] &lt;SPAN style="COLOR: #0000ff"&gt;&amp;gt;&amp;gt;&lt;/SPAN&gt; %temporaryFileName%&lt;/PRE&gt;&lt;!--CRLF--&gt;&lt;PRE style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"&gt;ECHO. &lt;SPAN style="COLOR: #0000ff"&gt;&amp;gt;&amp;gt;&lt;/SPAN&gt; %temporaryFileName%&lt;/PRE&gt;&lt;!--CRLF--&gt;&lt;PRE style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"&gt;ECHO [HKEY_CLASSES_ROOT\Windows.VirtualPC.HD\ShellEx\ContextMenuHandlers] &lt;SPAN style="COLOR: #0000ff"&gt;&amp;gt;&amp;gt;&lt;/SPAN&gt; %temporaryFileName%&lt;/PRE&gt;&lt;!--CRLF--&gt;&lt;PRE style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"&gt;ECHO. &lt;SPAN style="COLOR: #0000ff"&gt;&amp;gt;&amp;gt;&lt;/SPAN&gt; %temporaryFileName%&lt;/PRE&gt;&lt;!--CRLF--&gt;&lt;PRE style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"&gt;ECHO [HKEY_CLASSES_ROOT\Windows.VirtualPC.HD\Shell] &lt;SPAN style="COLOR: #0000ff"&gt;&amp;gt;&amp;gt;&lt;/SPAN&gt; %temporaryFileName%&lt;/PRE&gt;&lt;!--CRLF--&gt;&lt;PRE style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"&gt;ECHO. &lt;SPAN style="COLOR: #0000ff"&gt;&amp;gt;&amp;gt;&lt;/SPAN&gt; %temporaryFileName%&lt;/PRE&gt;&lt;!--CRLF--&gt;&lt;PRE style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"&gt;ECHO [HKEY_CLASSES_ROOT\Windows.VirtualPC.HD\Shell\Open2] &lt;SPAN style="COLOR: #0000ff"&gt;&amp;gt;&amp;gt;&lt;/SPAN&gt; %temporaryFileName%&lt;/PRE&gt;&lt;!--CRLF--&gt;&lt;PRE style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"&gt;ECHO @="M&amp;amp;ount VHD" &lt;SPAN style="COLOR: #0000ff"&gt;&amp;gt;&amp;gt;&lt;/SPAN&gt; %temporaryFileName%&lt;/PRE&gt;&lt;!--CRLF--&gt;&lt;PRE style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"&gt;ECHO. &lt;SPAN style="COLOR: #0000ff"&gt;&amp;gt;&amp;gt;&lt;/SPAN&gt; %temporaryFileName%&lt;/PRE&gt;&lt;!--CRLF--&gt;&lt;PRE style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"&gt;ECHO [HKEY_CLASSES_ROOT\Windows.VirtualPC.HD\Shell\Open2\Command] &lt;SPAN style="COLOR: #0000ff"&gt;&amp;gt;&amp;gt;&lt;/SPAN&gt; %temporaryFileName%&lt;/PRE&gt;&lt;!--CRLF--&gt;&lt;PRE style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"&gt;ECHO @="CMD /S /C  \"\"%batchFileName%\" mount \"%%1\"\"" &lt;SPAN style="COLOR: #0000ff"&gt;&amp;gt;&amp;gt;&lt;/SPAN&gt; %temporaryFileName%&lt;/PRE&gt;&lt;!--CRLF--&gt;&lt;PRE style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"&gt;ECHO. &lt;SPAN style="COLOR: #0000ff"&gt;&amp;gt;&amp;gt;&lt;/SPAN&gt; %temporaryFileName%&lt;/PRE&gt;&lt;!--CRLF--&gt;&lt;PRE style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"&gt;ECHO [HKEY_CLASSES_ROOT\Windows.VirtualPC.HD\Shell\Open3] &lt;SPAN style="COLOR: #0000ff"&gt;&amp;gt;&amp;gt;&lt;/SPAN&gt; %temporaryFileName%&lt;/PRE&gt;&lt;!--CRLF--&gt;&lt;PRE style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"&gt;ECHO @="D&amp;amp;ismount VHD" &lt;SPAN style="COLOR: #0000ff"&gt;&amp;gt;&amp;gt;&lt;/SPAN&gt; %temporaryFileName%&lt;/PRE&gt;&lt;!--CRLF--&gt;&lt;PRE style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"&gt;ECHO. &lt;SPAN style="COLOR: #0000ff"&gt;&amp;gt;&amp;gt;&lt;/SPAN&gt; %temporaryFileName%&lt;/PRE&gt;&lt;!--CRLF--&gt;&lt;PRE style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"&gt;ECHO [HKEY_CLASSES_ROOT\Windows.VirtualPC.HD\Shell\Open3\Command] &lt;SPAN style="COLOR: #0000ff"&gt;&amp;gt;&amp;gt;&lt;/SPAN&gt; %temporaryFileName%&lt;/PRE&gt;&lt;!--CRLF--&gt;&lt;PRE style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"&gt;ECHO @="CMD /S /C  \"\"%batchFileName%\" dismount \"%%1\"\"" &lt;SPAN style="COLOR: #0000ff"&gt;&amp;gt;&amp;gt;&lt;/SPAN&gt; %temporaryFileName%&lt;/PRE&gt;&lt;!--CRLF--&gt;&lt;PRE style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"&gt;ECHO. &lt;SPAN style="COLOR: #0000ff"&gt;&amp;gt;&amp;gt;&lt;/SPAN&gt; %temporaryFileName%&lt;/PRE&gt;&lt;!--CRLF--&gt;&lt;PRE style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"&gt;ECHO [HKEY_CLASSES_ROOT\Windows.VirtualPC.HD\Shell\Open] &lt;SPAN style="COLOR: #0000ff"&gt;&amp;gt;&amp;gt;&lt;/SPAN&gt; %temporaryFileName%&lt;/PRE&gt;&lt;!--CRLF--&gt;&lt;PRE style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"&gt;ECHO @="Mount &amp;amp;VHD (Read Only)" &lt;SPAN style="COLOR: #0000ff"&gt;&amp;gt;&amp;gt;&lt;/SPAN&gt; %temporaryFileName%&lt;/PRE&gt;&lt;!--CRLF--&gt;&lt;PRE style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"&gt;ECHO. &lt;SPAN style="COLOR: #0000ff"&gt;&amp;gt;&amp;gt;&lt;/SPAN&gt; %temporaryFileName%&lt;/PRE&gt;&lt;!--CRLF--&gt;&lt;PRE style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"&gt;ECHO [HKEY_CLASSES_ROOT\Windows.VirtualPC.HD\Shell\Open\Command] &lt;SPAN style="COLOR: #0000ff"&gt;&amp;gt;&amp;gt;&lt;/SPAN&gt; %temporaryFileName%&lt;/PRE&gt;&lt;!--CRLF--&gt;&lt;PRE style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"&gt;ECHO @="CMD /S /C  \"\"%batchFileName%\" readOnlyMount \"%%1\"\"" &lt;SPAN style="COLOR: #0000ff"&gt;&amp;gt;&amp;gt;&lt;/SPAN&gt; %temporaryFileName%&lt;/PRE&gt;&lt;!--CRLF--&gt;&lt;PRE style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"&gt;ECHO. &lt;SPAN style="COLOR: #0000ff"&gt;&amp;gt;&amp;gt;&lt;/SPAN&gt; %temporaryFileName%&lt;/PRE&gt;&lt;!--CRLF--&gt;&lt;PRE style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"&gt;ECHO [HKEY_CLASSES_ROOT\Windows.VirtualPC.HD\Shell\Open4] &lt;SPAN style="COLOR: #0000ff"&gt;&amp;gt;&amp;gt;&lt;/SPAN&gt; %temporaryFileName%&lt;/PRE&gt;&lt;!--CRLF--&gt;&lt;PRE style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"&gt;ECHO @="Com&amp;amp;pact VHD" &lt;SPAN style="COLOR: #0000ff"&gt;&amp;gt;&amp;gt;&lt;/SPAN&gt; %temporaryFileName%&lt;/PRE&gt;&lt;!--CRLF--&gt;&lt;PRE style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"&gt;ECHO. &lt;SPAN style="COLOR: #0000ff"&gt;&amp;gt;&amp;gt;&lt;/SPAN&gt; %temporaryFileName%&lt;/PRE&gt;&lt;!--CRLF--&gt;&lt;PRE style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"&gt;ECHO [HKEY_CLASSES_ROOT\Windows.VirtualPC.HD\Shell\Open4\Command] &lt;SPAN style="COLOR: #0000ff"&gt;&amp;gt;&amp;gt;&lt;/SPAN&gt; %temporaryFileName%&lt;/PRE&gt;&lt;!--CRLF--&gt;&lt;PRE style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"&gt;ECHO @="CMD /S /C  \"\"%batchFileName%\" compact \"%%1\"\"" &lt;SPAN style="COLOR: #0000ff"&gt;&amp;gt;&amp;gt;&lt;/SPAN&gt; %temporaryFileName%&lt;/PRE&gt;&lt;!--CRLF--&gt;&lt;PRE style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"&gt;&amp;nbsp;&lt;/PRE&gt;&lt;!--CRLF--&gt;&lt;PRE style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"&gt;regedit /s %temporaryFileName%&lt;/PRE&gt;&lt;!--CRLF--&gt;&lt;PRE style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"&gt;&amp;nbsp;&lt;/PRE&gt;&lt;!--CRLF--&gt;&lt;PRE style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"&gt;del %temporaryFileName%&lt;/PRE&gt;&lt;!--CRLF--&gt;&lt;PRE style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"&gt;&amp;nbsp;&lt;/PRE&gt;&lt;!--CRLF--&gt;&lt;PRE style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"&gt;ECHO.&lt;/PRE&gt;&lt;!--CRLF--&gt;&lt;PRE style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"&gt;ECHO Windows VHD integration installed.  &lt;/PRE&gt;&lt;!--CRLF--&gt;&lt;PRE style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"&gt;ECHO Run "%~f0 uninstall" to uninstall windows VHD integration if desired.&lt;/PRE&gt;&lt;!--CRLF--&gt;&lt;PRE style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"&gt;ECHO.&lt;/PRE&gt;&lt;!--CRLF--&gt;&lt;PRE style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"&gt;&amp;nbsp;&lt;/PRE&gt;&lt;!--CRLF--&gt;&lt;PRE style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"&gt;GOTO:EOF&lt;/PRE&gt;&lt;!--CRLF--&gt;&lt;PRE style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"&gt;&amp;nbsp;&lt;/PRE&gt;&lt;!--CRLF--&gt;&lt;PRE style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"&gt;REM - Remove registry keys&lt;/PRE&gt;&lt;!--CRLF--&gt;&lt;PRE style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"&gt;:uninstall&lt;/PRE&gt;&lt;!--CRLF--&gt;&lt;PRE style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"&gt;&amp;nbsp;&lt;/PRE&gt;&lt;!--CRLF--&gt;&lt;PRE style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"&gt;SET temporaryFileName=%temporaryFileName:txt=reg%&lt;/PRE&gt;&lt;!--CRLF--&gt;&lt;PRE style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"&gt;&amp;nbsp;&lt;/PRE&gt;&lt;!--CRLF--&gt;&lt;PRE style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"&gt;SET batchFileName=%~f0&lt;/PRE&gt;&lt;!--CRLF--&gt;&lt;PRE style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"&gt;SET batchFileName=%batchFileName:\=\\%&lt;/PRE&gt;&lt;!--CRLF--&gt;&lt;PRE style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"&gt;&amp;nbsp;&lt;/PRE&gt;&lt;!--CRLF--&gt;&lt;PRE style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"&gt;ECHO Windows Registry Editor Version 5.00 &lt;SPAN style="COLOR: #0000ff"&gt;&amp;gt;&lt;/SPAN&gt; %temporaryFileName%&lt;/PRE&gt;&lt;!--CRLF--&gt;&lt;PRE style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"&gt;ECHO. &lt;SPAN style="COLOR: #0000ff"&gt;&amp;gt;&amp;gt;&lt;/SPAN&gt; %temporaryFileName%&lt;/PRE&gt;&lt;!--CRLF--&gt;&lt;PRE style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"&gt;ECHO [-HKEY_CLASSES_ROOT\Windows.VirtualPC.HD\Shell] &lt;SPAN style="COLOR: #0000ff"&gt;&amp;gt;&amp;gt;&lt;/SPAN&gt; %temporaryFileName%&lt;/PRE&gt;&lt;!--CRLF--&gt;&lt;PRE style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"&gt;ECHO [-HKEY_CLASSES_ROOT\Windows.VirtualPC.HD\Shell\Open] &lt;SPAN style="COLOR: #0000ff"&gt;&amp;gt;&amp;gt;&lt;/SPAN&gt; %temporaryFileName%&lt;/PRE&gt;&lt;!--CRLF--&gt;&lt;PRE style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"&gt;ECHO [-HKEY_CLASSES_ROOT\Windows.VirtualPC.HD\Shell\Open\Command] &lt;SPAN style="COLOR: #0000ff"&gt;&amp;gt;&amp;gt;&lt;/SPAN&gt; %temporaryFileName%&lt;/PRE&gt;&lt;!--CRLF--&gt;&lt;PRE style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"&gt;ECHO [-HKEY_CLASSES_ROOT\Windows.VirtualPC.HD\Shell\Open2] &lt;SPAN style="COLOR: #0000ff"&gt;&amp;gt;&amp;gt;&lt;/SPAN&gt; %temporaryFileName%&lt;/PRE&gt;&lt;!--CRLF--&gt;&lt;PRE style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"&gt;ECHO [-HKEY_CLASSES_ROOT\Windows.VirtualPC.HD\Shell\Open2\Command] &lt;SPAN style="COLOR: #0000ff"&gt;&amp;gt;&amp;gt;&lt;/SPAN&gt; %temporaryFileName%&lt;/PRE&gt;&lt;!--CRLF--&gt;&lt;PRE style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"&gt;ECHO [-HKEY_CLASSES_ROOT\Windows.VirtualPC.HD\Shell\Open3] &lt;SPAN style="COLOR: #0000ff"&gt;&amp;gt;&amp;gt;&lt;/SPAN&gt; %temporaryFileName%&lt;/PRE&gt;&lt;!--CRLF--&gt;&lt;PRE style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"&gt;ECHO [-HKEY_CLASSES_ROOT\Windows.VirtualPC.HD\Shell\Open3\Command] &lt;SPAN style="COLOR: #0000ff"&gt;&amp;gt;&amp;gt;&lt;/SPAN&gt; %temporaryFileName%&lt;/PRE&gt;&lt;!--CRLF--&gt;&lt;PRE style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"&gt;ECHO [-HKEY_CLASSES_ROOT\Windows.VirtualPC.HD\Shell\Open4] &lt;SPAN style="COLOR: #0000ff"&gt;&amp;gt;&amp;gt;&lt;/SPAN&gt; %temporaryFileName%&lt;/PRE&gt;&lt;!--CRLF--&gt;&lt;PRE style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"&gt;ECHO [-HKEY_CLASSES_ROOT\Windows.VirtualPC.HD\Shell\Open4\Command] &lt;SPAN style="COLOR: #0000ff"&gt;&amp;gt;&amp;gt;&lt;/SPAN&gt; %temporaryFileName%&lt;/PRE&gt;&lt;!--CRLF--&gt;&lt;PRE style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"&gt;&amp;nbsp;&lt;/PRE&gt;&lt;!--CRLF--&gt;&lt;PRE style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"&gt;regedit /s %temporaryFileName%&lt;/PRE&gt;&lt;!--CRLF--&gt;&lt;PRE style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"&gt;&amp;nbsp;&lt;/PRE&gt;&lt;!--CRLF--&gt;&lt;PRE style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"&gt;del %temporaryFileName%&lt;/PRE&gt;&lt;!--CRLF--&gt;&lt;PRE style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"&gt;&amp;nbsp;&lt;/PRE&gt;&lt;!--CRLF--&gt;&lt;PRE style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"&gt;ECHO.&lt;/PRE&gt;&lt;!--CRLF--&gt;&lt;PRE style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"&gt;ECHO Windows VHD integration uninstalled.  &lt;/PRE&gt;&lt;!--CRLF--&gt;&lt;PRE style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"&gt;ECHO Run "%~f0 install" to install windows VHD integration if desired.&lt;/PRE&gt;&lt;!--CRLF--&gt;&lt;PRE style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"&gt;ECHO.&lt;/PRE&gt;&lt;!--CRLF--&gt;&lt;PRE style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"&gt;&amp;nbsp;&lt;/PRE&gt;&lt;!--CRLF--&gt;&lt;PRE style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"&gt;GOTO:EOF&lt;/PRE&gt;&lt;!--CRLF--&gt;&lt;PRE style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"&gt;&amp;nbsp;&lt;/PRE&gt;&lt;!--CRLF--&gt;&lt;PRE style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"&gt;REM - Helpful error message&lt;/PRE&gt;&lt;!--CRLF--&gt;&lt;PRE style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"&gt;:error&lt;/PRE&gt;&lt;!--CRLF--&gt;&lt;PRE style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"&gt;ECHO.&lt;/PRE&gt;&lt;!--CRLF--&gt;&lt;PRE style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"&gt;ECHO VHD Batch file.&lt;/PRE&gt;&lt;!--CRLF--&gt;&lt;PRE style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"&gt;ECHO.&lt;/PRE&gt;&lt;!--CRLF--&gt;&lt;PRE style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"&gt;ECHO Usage:&lt;/PRE&gt;&lt;!--CRLF--&gt;&lt;PRE style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"&gt;ECHO.&lt;/PRE&gt;&lt;!--CRLF--&gt;&lt;PRE style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"&gt;ECHO %~n0 install&lt;/PRE&gt;&lt;!--CRLF--&gt;&lt;PRE style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"&gt;ECHO.&lt;/PRE&gt;&lt;!--CRLF--&gt;&lt;PRE style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"&gt;ECHO This command will allow you to right click on a virtual hard disk&lt;/PRE&gt;&lt;!--CRLF--&gt;&lt;PRE style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"&gt;ECHO and select and action to perform without manually running this&lt;/PRE&gt;&lt;!--CRLF--&gt;&lt;PRE style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"&gt;ECHO batch file.  Make sure you do not move or delete the batch file&lt;/PRE&gt;&lt;!--CRLF--&gt;&lt;PRE style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"&gt;ECHO after running this command without first running "uninstall".&lt;/PRE&gt;&lt;!--CRLF--&gt;&lt;PRE style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"&gt;ECHO.&lt;/PRE&gt;&lt;!--CRLF--&gt;&lt;PRE style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"&gt;ECHO %~n0 uninstall&lt;/PRE&gt;&lt;!--CRLF--&gt;&lt;PRE style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"&gt;ECHO.&lt;/PRE&gt;&lt;!--CRLF--&gt;&lt;PRE style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"&gt;ECHO Removes all information from the system about this batch file.&lt;/PRE&gt;&lt;!--CRLF--&gt;&lt;PRE style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"&gt;ECHO.&lt;/PRE&gt;&lt;!--CRLF--&gt;&lt;PRE style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"&gt;ECHO %~n0 mount "full path and name for a virtual hard disk"&lt;/PRE&gt;&lt;!--CRLF--&gt;&lt;PRE style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"&gt;ECHO.&lt;/PRE&gt;&lt;!--CRLF--&gt;&lt;PRE style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"&gt;ECHO will use DISKPART to mount the virtual hard disk specified. Note&lt;/PRE&gt;&lt;!--CRLF--&gt;&lt;PRE style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"&gt;ECHO that you need to provide the full path and name for the virtual&lt;/PRE&gt;&lt;!--CRLF--&gt;&lt;PRE style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"&gt;ECHO hard disk, and that you should not mount a virtual hard disk that&lt;/PRE&gt;&lt;!--CRLF--&gt;&lt;PRE style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"&gt;ECHO has differencing disks, undo disks or snapshot files associated&lt;/PRE&gt;&lt;!--CRLF--&gt;&lt;PRE style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"&gt;ECHO with it.&lt;/PRE&gt;&lt;!--CRLF--&gt;&lt;PRE style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"&gt;ECHO.&lt;/PRE&gt;&lt;!--CRLF--&gt;&lt;PRE style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"&gt;ECHO %~n0 readOnlyMount "full path and name for a virtual hard disk"&lt;/PRE&gt;&lt;!--CRLF--&gt;&lt;PRE style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"&gt;ECHO.&lt;/PRE&gt;&lt;!--CRLF--&gt;&lt;PRE style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"&gt;ECHO will use DISKPART to mount the virtual hard disk specified. In&lt;/PRE&gt;&lt;!--CRLF--&gt;&lt;PRE style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"&gt;ECHO read only mode.  This is always safe to do. Note that you need to &lt;/PRE&gt;&lt;!--CRLF--&gt;&lt;PRE style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"&gt;ECHO provide the full path and name for the virtual hard disk.&lt;/PRE&gt;&lt;!--CRLF--&gt;&lt;PRE style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"&gt;ECHO.&lt;/PRE&gt;&lt;!--CRLF--&gt;&lt;PRE style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"&gt;ECHO %~n0 dismount "full path and name for a virtual hard disk"&lt;/PRE&gt;&lt;!--CRLF--&gt;&lt;PRE style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"&gt;ECHO.&lt;/PRE&gt;&lt;!--CRLF--&gt;&lt;PRE style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"&gt;ECHO will use DISKPART to mount the virtual hard disk specified. Note&lt;/PRE&gt;&lt;!--CRLF--&gt;&lt;PRE style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"&gt;ECHO that you need to provide the full path and name for the virtual&lt;/PRE&gt;&lt;!--CRLF--&gt;&lt;PRE style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"&gt;ECHO hard disk.&lt;/PRE&gt;&lt;!--CRLF--&gt;&lt;PRE style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"&gt;ECHO.&lt;/PRE&gt;&lt;!--CRLF--&gt;&lt;PRE style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"&gt;ECHO %~n0 compact "full path and name for a virtual hard disk"&lt;/PRE&gt;&lt;!--CRLF--&gt;&lt;PRE style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"&gt;ECHO.&lt;/PRE&gt;&lt;!--CRLF--&gt;&lt;PRE style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"&gt;ECHO will use DISKPART to compact the virtual hard disk specified. Note&lt;/PRE&gt;&lt;!--CRLF--&gt;&lt;PRE style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"&gt;ECHO that you need to provide the full path and name for the virtual&lt;/PRE&gt;&lt;!--CRLF--&gt;&lt;PRE style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"&gt;ECHO hard disk, and that you should not compact a virtual hard disk that&lt;/PRE&gt;&lt;!--CRLF--&gt;&lt;PRE style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"&gt;ECHO has differencing disks, undo disks or snapshot files associated&lt;/PRE&gt;&lt;!--CRLF--&gt;&lt;PRE style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"&gt;ECHO with it.  You should also not compact a virtual hard disk that is&lt;/PRE&gt;&lt;!--CRLF--&gt;&lt;PRE style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"&gt;ECHO currently mounted.&lt;/PRE&gt;&lt;!--CRLF--&gt;&lt;/DIV&gt;&lt;/DIV&gt;
&lt;P&gt;If you put this text into a .CMD file (or download the attached file on this blog) and place it where ever you want to keep it – you can do one of two things:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;Use it as a convenient command line tool for mounting and dismounting virtual hard disks&lt;/LI&gt;
&lt;LI&gt;Run it with the “install” parameter – in which case it will add registry entries to your system that allow you to double click on a virtual hard disk to have it mount (in read only mode) or right click on a virtual hard disk to get options to mount, dismount or compact a virtual hard disk&lt;/LI&gt;&lt;/UL&gt;
&lt;P&gt;So what is it doing under the covers?&amp;nbsp; For the disk related operations this batch file builds a DISKPART script file on the fly and feeds it into DISKPART.&amp;nbsp; For installing and uninstalling it adds and removes appropriate registry keys.&lt;/P&gt;
&lt;P&gt;After a bit of testing I can confirm that this works on Windows 7 and Windows 2008 R2, 32-bit and 64-bit, with and without Windows Virtual PC and Hyper-V and is fully compatibility with UAC.&lt;/P&gt;
&lt;P&gt;Have fun!&lt;/P&gt;
&lt;P&gt;Cheers, &lt;BR&gt;Ben&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9920711" width="1" height="1"&gt;</content><author><name>Virtual PC Guy</name><uri>http://blogs.msdn.com/members/Virtual+PC+Guy.aspx</uri></author><category term="Hyper-V" scheme="http://blogs.msdn.com/virtual_pc_guy/archive/tags/Hyper-V/default.aspx" /><category term="Windows 7" scheme="http://blogs.msdn.com/virtual_pc_guy/archive/tags/Windows+7/default.aspx" /><category term="Windows Server 2008 R2" scheme="http://blogs.msdn.com/virtual_pc_guy/archive/tags/Windows+Server+2008+R2/default.aspx" /><category term="Windows Virtual PC" scheme="http://blogs.msdn.com/virtual_pc_guy/archive/tags/Windows+Virtual+PC/default.aspx" /></entry><entry><title>Welcome to blog week!</title><link rel="alternate" type="text/html" href="http://blogs.msdn.com/virtual_pc_guy/archive/2009/11/09/welcome-to-blog-week.aspx" /><id>http://blogs.msdn.com/virtual_pc_guy/archive/2009/11/09/welcome-to-blog-week.aspx</id><published>2009-11-09T23:27:29Z</published><updated>2009-11-09T23:27:29Z</updated><content type="html">&lt;p&gt;While this will not surprise my regular readers – some of you will be interested to know that blogging is usually only a very small fraction of my job.&amp;#160; My official title is “Program Manager Lead” which means that my responsibilities roughly break down into the following buckets:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;strong&gt;Getting to know our customers and competitors really well&lt;/strong&gt;       &lt;ul&gt;       &lt;li&gt;This involves meeting with customers regularly, doing phone calls, attending trade shows, hanging out on forums, doing online chats, reading blogs, etc… &lt;/li&gt;     &lt;/ul&gt;   &lt;/li&gt;    &lt;li&gt;&lt;strong&gt;Making sure we are actually building software that works for our customers / is competitive&lt;/strong&gt;       &lt;ul&gt;       &lt;li&gt;Here I am writing documentation, reviewing and triaging bugs, and spending time meeting with developers and testers on the team. &lt;/li&gt;     &lt;/ul&gt;   &lt;/li&gt;    &lt;li&gt;&lt;strong&gt;Ensuring that we actually get the software shipped at the end of the day&lt;/strong&gt;       &lt;ul&gt;       &lt;li&gt;Lots of status meetings and paper work to make sure that everything comes together at the end of the day. &lt;/li&gt;     &lt;/ul&gt;   &lt;/li&gt;    &lt;li&gt;&lt;strong&gt;Managing my team of program managers&lt;/strong&gt;       &lt;ul&gt;       &lt;li&gt;As a lead I manage a number of other program managers, and need to work with them to ensure that they have everything that they need to do their jobs. &lt;/li&gt;     &lt;/ul&gt;   &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;As you can see – that is a lot of “non-blogging work”.&amp;#160; The truth is that I started out blogging mainly as a way to ensure that I used my own software on a regular basis – but it has come to be something that I really enjoy doing.&amp;#160; Most of my blogging is actually done after hours (and often on a Sunday afternoon).&amp;#160; The average blog post takes ~1 hour to write (I have a strict policy of only blogging about things that I have personally done, so that I know that there will not be errors in my information) and I aim to have 5 blogs each week (though I often fall short of this goal).&lt;/p&gt;  &lt;p&gt;One of the interesting side effects of blogging, for me, has been that it has helped with getting to know my customers.&amp;#160; These days I get so much feedback from you all that there is no way for me to keep up with responses.&amp;#160; So while I apologize to everyone who has emailed me through the blog, and has not heard back – know that I do read every email, and I respond when I can.&amp;#160; All of this information gives me a very good indication of what is going on out there.&lt;/p&gt;  &lt;p&gt;With all of that aside – back to the topic at hand “Welcome to blog week!”&lt;/p&gt;  &lt;p&gt;Thanks to a combination of having just got back from TechEd China (lots of fun – but now I am quite jetlagged) and being without an office (due to my current office being moved to a new building) I have arranged to cancel most of my meetings / responsibilities for this week – and just focus on the blog.&amp;#160; I have a number of activities planned for this week.&amp;#160; In no particular order they include:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;strong&gt;Scrubbing old blog posts&lt;/strong&gt;&lt;/li&gt;    &lt;ul&gt;     &lt;li&gt;At the moment I have 877 blog posts made over the last 4 years.&amp;#160; During this time I have used different blog themes, and different blogging tools.&amp;#160; As such you can see stylistic and formatting differences over the years.&amp;#160; I would like to try and clean this up to make it consistent across all posts.&lt;/li&gt;      &lt;li&gt;Is that URL link in a post from early 2006 still valid?&amp;#160; I have no idea – but I intend to find out.&lt;/li&gt;   &lt;/ul&gt;    &lt;li&gt;&lt;strong&gt;Overhauling my tagging system&lt;/strong&gt;&lt;/li&gt;    &lt;ul&gt;     &lt;li&gt;My current tagging system has grown organically – and it has some significant short comings.&amp;#160; The biggest one is that it does not differentiate between versions of products.&amp;#160; If you pull up a random post from my site about Virtual PC – it is hard to tell if I am talking about Virtual PC 2004, Virtual PC 2007 or Windows Virtual PC.&amp;#160; It is also hard to tell when I am talking about a beta release or an RTM release.&amp;#160; I really need to fix this.&lt;/li&gt;   &lt;/ul&gt;    &lt;li&gt;&lt;strong&gt;Tweaking the overall style of the blog&lt;/strong&gt;&lt;/li&gt;    &lt;ul&gt;     &lt;li&gt;I would like to refine the current theme a little (add a bit more definition).&amp;#160; I would also like to add a dedicated “Links / Resources” page.&amp;#160; There are some other miscellaneous changes I would like to make.&lt;/li&gt;   &lt;/ul&gt;    &lt;li&gt;&lt;strong&gt;Getting back to unresolved comment threads&lt;/strong&gt;&lt;/li&gt;    &lt;ul&gt;     &lt;li&gt;Yup, I suck.&amp;#160; There are many posts out there where people have asked questions – and I never got around to answering them.&amp;#160; I need to get back and make sure the answer is there so that new people to the site can benefit from knowing the right information.&lt;/li&gt;   &lt;/ul&gt;    &lt;li&gt;&lt;strong&gt;Tackling some big posts&lt;/strong&gt;&lt;/li&gt;    &lt;ul&gt;     &lt;li&gt;There are a number of blog ideas in my notebook that have been there too long – because they will require a couple of hours to research and write up.&amp;#160; Hopefully I can get some of these done this week.&lt;/li&gt;   &lt;/ul&gt;    &lt;li&gt;&lt;strong&gt;Building up a queue of new posts&lt;/strong&gt;&lt;/li&gt;    &lt;ul&gt;     &lt;li&gt;I have a holiday coming up (four weeks in Australia) and I have always dreamed of being able to go on a holiday like this, while having blog regularly going live because I have been diligent and written them all up ahead of time.&amp;#160; This has never happened.&amp;#160; Maybe this will be my chance to change that.&lt;/li&gt;   &lt;/ul&gt; &lt;/ul&gt;  &lt;p&gt;Now I have some questions for you:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Are there any topics you really want to see me write about? &lt;/li&gt;    &lt;li&gt;Is there anything you would like changed about my blog?&lt;/li&gt;    &lt;li&gt;Should I open up old posts for comments?&lt;/li&gt;    &lt;ul&gt;     &lt;li&gt;At the moment comments are disabled on blog posts automatically after 60 days.&amp;#160; I can disable this – but the chances of me being able to reply to new comments will likely go down as a result.&lt;/li&gt;   &lt;/ul&gt;    &lt;li&gt;Is there anything that you think I should be doing that is not on my list?&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;So as not to spam my own blog, I will be posting status updates on what I am working on to Twitter.&lt;/p&gt;  &lt;p&gt;Cheers,   &lt;br /&gt;Ben&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9919871" width="1" height="1"&gt;</content><author><name>Virtual PC Guy</name><uri>http://blogs.msdn.com/members/Virtual+PC+Guy.aspx</uri></author><category term="Personal" scheme="http://blogs.msdn.com/virtual_pc_guy/archive/tags/Personal/default.aspx" /></entry><entry><title>Restricting Shared Drives under Windows Virtual PC</title><link rel="alternate" type="text/html" href="http://blogs.msdn.com/virtual_pc_guy/archive/2009/11/04/restricting-shared-drives-under-windows-virtual-pc.aspx" /><id>http://blogs.msdn.com/virtual_pc_guy/archive/2009/11/04/restricting-shared-drives-under-windows-virtual-pc.aspx</id><published>2009-11-05T04:53:15Z</published><updated>2009-11-05T04:53:15Z</updated><content type="html">&lt;p&gt;When it comes to minimizing the potential for malicious software running in a virtual machine to affect your physical computer, there are two golden rules to follow:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Secure the virtual machine just like you would a physical computer.&amp;#160; This means installing antivirus / anti-malware software, configuring firewalls, regularly installing updates, etc…      &lt;br /&gt;      &lt;br /&gt;&lt;/li&gt;    &lt;li&gt;Reduce the potential paths for the virtual machine to access your physical computer. &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;In the latter category there are three common paths:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Standard networking.&amp;#160; Here the risk is no greater (or lesser) than if you had a separate computer connected to the same network.      &lt;br /&gt;      &lt;br /&gt;&lt;/li&gt;    &lt;li&gt;Clipboard sharing.&amp;#160; When integration components are enabled, any data that is put into the virtual machines clipboard is automatically copied to the physical computers clipboard (and vice versa).&amp;#160; The potential for risk here is relatively low – but if it is a concern for you – you can easily disable this feature under the virtual machine settings.      &lt;br /&gt;      &lt;br /&gt;&lt;/li&gt;    &lt;li&gt;Shared Drives.&amp;#160; Shared drives allow the virtual machine to access the drives of the physical computer – without needing a network connection to be present.&amp;#160; This functionality is critical for most people who use Virtual PC – but it is also an obvious path for malicious software to get to data on the physical computer from inside the virtual machine.&amp;#160; As such I would like to spend some time talking about how to restrict this functionality appropriately. &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;The first thing to know is that you can configure drive sharing so that only specific drives are shared:&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;a href="http://blogs.msdn.com/blogfiles/virtual_pc_guy/WindowsLiveWriter/RestrictingSharedDrivesunderWindowsVirtu_CE60/integration_2.png" target="_blank"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="integration" border="0" alt="integration" src="http://blogs.msdn.com/blogfiles/virtual_pc_guy/WindowsLiveWriter/RestrictingSharedDrivesunderWindowsVirtu_CE60/integration_thumb.png" width="244" height="174" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;You should always make sure that this setting is configured appropriately for your environment.&amp;#160; &lt;/p&gt;  &lt;p&gt;But what if you do not want to share and entire drive?&amp;#160; What if you just want to share a single folder?&amp;#160; &lt;/p&gt;  &lt;p&gt;Well, I have found a handy method to do just this.&amp;#160; It is a little cheesy, but it allows you to drastically reduce the surface area that is exposed.&amp;#160; Basically – what you need to do is to create the folder that you want to share, open a command prompt, and run the following command:&lt;/p&gt;  &lt;p&gt;&lt;font color="#000080" face="cou"&gt;&lt;strong&gt;subst j: c:\MySharedFolder&lt;/strong&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;This creates a “virtual” drive that points to the folder you created (in this case I am mapping “C:\MySharedFolder” to J: – but obviously you can use any drive letter or folder that you want to use).&amp;#160; You can then map this drive into the virtual machine:&lt;/p&gt;  &lt;p&gt;Cheers,    &lt;br /&gt;Ben&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9917738" width="1" height="1"&gt;</content><author><name>Virtual PC Guy</name><uri>http://blogs.msdn.com/members/Virtual+PC+Guy.aspx</uri></author><category term="Windows 7" scheme="http://blogs.msdn.com/virtual_pc_guy/archive/tags/Windows+7/default.aspx" /><category term="Windows XP Mode" scheme="http://blogs.msdn.com/virtual_pc_guy/archive/tags/Windows+XP+Mode/default.aspx" /><category term="Windows Virtual PC" scheme="http://blogs.msdn.com/virtual_pc_guy/archive/tags/Windows+Virtual+PC/default.aspx" /></entry><entry><title>Virtual Machine Migration Test Wizard</title><link rel="alternate" type="text/html" href="http://blogs.msdn.com/virtual_pc_guy/archive/2009/11/03/virtual-machine-migration-test-wizard.aspx" /><id>http://blogs.msdn.com/virtual_pc_guy/archive/2009/11/03/virtual-machine-migration-test-wizard.aspx</id><published>2009-11-03T20:12:46Z</published><updated>2009-11-03T20:12:46Z</updated><content type="html">&lt;p&gt;I little while ago some member of the Hyper-V test team released a new tool on code.msdn.microsoft.com.&amp;#160; It is the Virtual Machine Migration Test Wizard:&lt;/p&gt;  &lt;p&gt;&lt;a title="http://code.msdn.microsoft.com/VMMTestWizard" href="http://code.msdn.microsoft.com/VMMTestWizard"&gt;http://code.msdn.microsoft.com/VMMTestWizard&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;In Windows Server 2008 R2 we introduced a new “Processor Compatibility” feature (as discussed &lt;a href="http://blogs.msdn.com/virtual_pc_guy/archive/2009/06/09/processor-compatibility-in-hyper-v-r2.aspx" target="_blank"&gt;here&lt;/a&gt;).&amp;#160; The primary purpose of this new tool is to allow you to determine if you need to enable this feature in your environment to be able to move virtual machines.&lt;/p&gt;  &lt;p&gt;You can also use this tool to determine how physical computers should be grouped – if you want to avoid turning this feature on.&lt;/p&gt;  &lt;p&gt;There is also a video available from the author of this Tool – Dinesh – where he talks about how it works and demonstrates it running &lt;a href="http://video.msn.com/video.aspx?mkt=en-US&amp;amp;vid=487bbef4-6ab7-4121-91de-c87613014bbb" target="_blank"&gt;here&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;Cheers,   &lt;br /&gt;Ben&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9916948" width="1" height="1"&gt;</content><author><name>Virtual PC Guy</name><uri>http://blogs.msdn.com/members/Virtual+PC+Guy.aspx</uri></author><category term="Hyper-V" scheme="http://blogs.msdn.com/virtual_pc_guy/archive/tags/Hyper-V/default.aspx" /><category term="Windows Server 2008 R2" scheme="http://blogs.msdn.com/virtual_pc_guy/archive/tags/Windows+Server+2008+R2/default.aspx" /></entry><entry><title>Understanding (and troubleshooting) Auto-Publishing in Windows Virtual PC</title><link rel="alternate" type="text/html" href="http://blogs.msdn.com/virtual_pc_guy/archive/2009/10/28/understanding-and-troubleshooting-auto-publishing-in-windows-virtual-pc.aspx" /><id>http://blogs.msdn.com/virtual_pc_guy/archive/2009/10/28/understanding-and-troubleshooting-auto-publishing-in-windows-virtual-pc.aspx</id><published>2009-10-28T17:57:00Z</published><updated>2009-10-28T17:57:00Z</updated><content type="html">&lt;p&gt;One of the cool features of Windows Virtual PC is how applications that are installed into Windows XP, Windows Vista and Windows 7 virtual machines automatically appear in the start menu on the host operating system – and can be launched directly without first needing to open the virtual machine in question:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/virtual_pc_guy/WindowsLiveWriter/UnderstandingAutoPublishinginWindowsVirt_4C8/autopublish-startmenu_4.png" target="_blank"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="autopublish-startmenu" border="0" alt="autopublish-startmenu" src="http://blogs.msdn.com/blogfiles/virtual_pc_guy/WindowsLiveWriter/UnderstandingAutoPublishinginWindowsVirt_4C8/autopublish-startmenu_thumb_1.png" width="178" height="240" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;These shortcuts get created through a process that we call Auto-Publishing.&amp;#160; What happens is that we monitor the guest operating system while it is running, and when we detect that a new application has been installed, we create a shortcut for the application in the host start menu.&lt;/p&gt;  &lt;p&gt;Most of the time this “just works”.&amp;#160; When it does not work there are a couple of areas that you can look:&lt;/p&gt;  &lt;ol&gt;   &lt;li&gt;&lt;strong&gt;Does the guest operating system support auto-publishing?&lt;/strong&gt;       &lt;br /&gt;      &lt;br /&gt;Auto-publishing is only supported for virtual machines running Windows XP SP3, Windows Vista SP1 (or later) or Windows 7.&amp;#160; Windows 7 virtual machines are ready to go when it comes to auto-publishing.&amp;#160; But Windows XP and Windows Vista virtual machines need to have an extra update installed in them in order for auto-publishing to work.&amp;#160; You can download the Windows XP update &lt;a href="http://go.microsoft.com/fwlink/?LinkId=140339" target="_blank"&gt;here&lt;/a&gt; and the Windows Vista update &lt;a href="http://go.microsoft.com/fwlink/?LinkId=140340" target="_blank"&gt;here&lt;/a&gt;.       &lt;br /&gt;      &lt;br /&gt;No matter which guest operating system you are running you will also need to ensure that the Windows Virtual PC Integration Components &lt;a href="http://technet.microsoft.com/en-us/library/ee449409(WS.10).aspx" target="_blank"&gt;have been installed&lt;/a&gt;, and that integration features are enabled.       &lt;br /&gt;      &lt;br /&gt;&lt;/li&gt;    &lt;li&gt;&lt;strong&gt;Is auto-publishing enabled?&lt;/strong&gt;       &lt;br /&gt;      &lt;br /&gt;Auto-publishing is enabled by default, but we allow you to turn it off if you want to.&amp;#160; It is always worth double-checking this option in the virtual machine settings, to make sure you have not disabled it accidentally:       &lt;br /&gt;      &lt;br /&gt;&lt;a href="http://blogs.msdn.com/blogfiles/virtual_pc_guy/WindowsLiveWriter/UnderstandingAutoPublishinginWindowsVirt_4C8/autopublish-XPModeSettings_2.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="autopublish-XPModeSettings" border="0" alt="autopublish-XPModeSettings" src="http://blogs.msdn.com/blogfiles/virtual_pc_guy/WindowsLiveWriter/UnderstandingAutoPublishinginWindowsVirt_4C8/autopublish-XPModeSettings_thumb.png" width="244" height="165" /&gt;&lt;/a&gt;       &lt;br /&gt;&lt;/li&gt;    &lt;li&gt;&lt;strong&gt;Was a shortcut for the application created in the “All Users” start menu in the guest operating system?&lt;/strong&gt;       &lt;br /&gt;      &lt;br /&gt;Windows Virtual PC detects that an application has been installed in the virtual machine by looking for shortcuts that have been created in the &lt;strong&gt;All Users&lt;/strong&gt; start menu.&amp;#160; If the application installer did not create a shortcut in the start menu, or created one in the local user start menu, Windows Virtual PC will not auto-publish the application.&amp;#160; You can check this by looking in the &lt;strong&gt;All Users&lt;/strong&gt; start menu in the guest operating system.&amp;#160; Here are the locations to check under each guest operating system:       &lt;br /&gt;      &lt;br /&gt;&lt;strong&gt;Windows XP:&lt;/strong&gt; %SystemDrive%\Documents and Settings\All Users\Start Menu\Programs       &lt;br /&gt;&lt;strong&gt;Windows Vista:&lt;/strong&gt; %SystemDrive%\ProgramData\Microsoft\Windows\Start Menu\Programs       &lt;br /&gt;&lt;strong&gt;Windows 7:&lt;/strong&gt; %SystemDrive%\ProgramData\Microsoft\Windows\Start Menu\Programs       &lt;br /&gt;      &lt;br /&gt;If you cannot find a shortcut in these locations – create one there and you should be good to go.       &lt;br /&gt;      &lt;br /&gt;&lt;/li&gt;    &lt;li&gt;&lt;strong&gt;Is the application being blocked by policy settings?&lt;/strong&gt;       &lt;br /&gt;      &lt;br /&gt;In order to stop a blank Windows virtual machine from spamming your start menu with a bunch of shortcuts when you first bring it up – we block a bunch of applications by default.&amp;#160; The list of blocked applications is stored in the registry inside the virtual machine at &lt;strong&gt;HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Virtual Machine\VPCVAppExcludeList&lt;/strong&gt;.&amp;#160; You can go here to check to see if the application you are trying to get published is on this list:       &lt;br /&gt;      &lt;br /&gt;&lt;a href="http://blogs.msdn.com/blogfiles/virtual_pc_guy/WindowsLiveWriter/UnderstandingAutoPublishinginWindowsVirt_4C8/autopublish-registryEditor_2.png" target="_blank"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="autopublish-registryEditor" border="0" alt="autopublish-registryEditor" src="http://blogs.msdn.com/blogfiles/virtual_pc_guy/WindowsLiveWriter/UnderstandingAutoPublishinginWindowsVirt_4C8/autopublish-registryEditor_thumb.png" width="244" height="127" /&gt;&lt;/a&gt;       &lt;br /&gt;      &lt;br /&gt;If it is, you can delete the registry key for that application, and it should appear in the host start menu. &lt;/li&gt; &lt;/ol&gt;  &lt;p&gt;Cheers,    &lt;br /&gt;Ben&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9912657" width="1" height="1"&gt;</content><author><name>Virtual PC Guy</name><uri>http://blogs.msdn.com/members/Virtual+PC+Guy.aspx</uri></author><category term="Windows XP Mode" scheme="http://blogs.msdn.com/virtual_pc_guy/archive/tags/Windows+XP+Mode/default.aspx" /><category term="Windows Virtual PC" scheme="http://blogs.msdn.com/virtual_pc_guy/archive/tags/Windows+Virtual+PC/default.aspx" /></entry><entry><title>Installing Virtual CD Software in a Virtual Machine</title><link rel="alternate" type="text/html" href="http://blogs.msdn.com/virtual_pc_guy/archive/2009/10/27/installing-virtual-cd-software-in-a-virtual-machine.aspx" /><id>http://blogs.msdn.com/virtual_pc_guy/archive/2009/10/27/installing-virtual-cd-software-in-a-virtual-machine.aspx</id><published>2009-10-27T17:19:00Z</published><updated>2009-10-27T17:19:00Z</updated><content type="html">&lt;p&gt;Like many Hyper-V users, I have created ISO images of most of my CDs / DVDs (and in the case of my MSDN software – have downloaded in ISO format to begin with).&amp;#160; I then have these images stored on a file server.&lt;/p&gt;  &lt;p&gt;It is possible to connect a CD ISO image on a file server to a Hyper-V virtual machine, as long as you are working in a domain environment and you are running the Hyper-V management user interface directly on the Hyper-V server.&lt;/p&gt;  &lt;p&gt;If you run the Hyper-V management user interface on a remote computer, you will need to &lt;a href="http://blogs.technet.com/josebda/archive/2008/06/27/using-constrained-delegation-to-remotely-manage-a-server-running-hyper-v-that-uses-cifs-smb-file-shares.aspx" target="_blank"&gt;enable constrained delegation&lt;/a&gt; in order to use ISO images on a network share.&amp;#160; If you are running in a workgroup environment your only option is to enable anonymous access to the file share that holds your ISO images (obviously not a good idea from a security point of view).&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;Aside: The reason for these conditions is that Hyper-V requires the use of both your personal user credentials and the Hyper-V servers workstation credentials when connecting an ISO image to the virtual machine.&amp;#160; &lt;/p&gt;    &lt;p&gt;Your user credentials are used to verify that you personally have permission to use the ISO image in question.&amp;#160; The use of your user credentials is why constrained delegation needs to be enable for remote management to work.&lt;/p&gt;    &lt;p&gt;The Hyper-V server workstation credentials are used to ensure that we can start the virtual machine, and connect the ISO image to the virtual machine, even when you are not logged into the server (for example, if the server needs to be rebooted).&amp;#160; Unfortunately workstation credentials only work in domain environments – so workgroup environments need to enable anonymous access.&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;As I am using Windows Home Server for my file server – which does not support being joined to a domain – setting up a share with anonymous access was the only option for me.&amp;#160; But I found this idea so abhorrent that I would make local copies of ISO files as I needed them instead.&amp;#160; &lt;/p&gt;  &lt;p&gt;Needless to say I was far from happy with this arrangement.&lt;/p&gt;  &lt;p&gt;Furthermore, as I often use Remote Desktop to connect directly to the guest operating system in my virtual machines, I have found it irritating to need to switch back to the Hyper-V management user interface solely for the purpose of connecting a new ISO image.&lt;/p&gt;  &lt;p&gt;Luckily I have found a simple and elegant solution to both of these problems.&lt;/p&gt;  &lt;p&gt;What I have done is to install Virtual CD software inside each of my virtual machines.&amp;#160; This allows me to use ISO images that are stored on my Windows Home Server, and I can connect CD ISO images even when I am connected using Remote desktop.&amp;#160; For my virtual machines I am using &lt;a href="http://www.alcohol-soft.com/" target="_blank"&gt;Alcohol 52%&lt;/a&gt;, but other programs to look at for this include &lt;a href="http://www.slysoft.com/en/virtual-clonedrive.html" target="_blank"&gt;Virtual CloneDrive&lt;/a&gt; and &lt;a href="http://www.daemon-tools.cc" target="_blank"&gt;DAEMON Tools&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;This solution will not work for installing operating systems (but I these days I tend to use &lt;a href="http://blogs.msdn.com/virtual_pc_guy/archive/2009/08/25/geeking-out-with-windows-deployment-services.aspx" target="_blank"&gt;Windows Deployment Services&lt;/a&gt; for that – so that is not an issue for me) but it works for everything you could think of once the operating system is up and running.&lt;/p&gt;  &lt;p&gt;Cheers,   &lt;br /&gt;Ben&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9912539" width="1" height="1"&gt;</content><author><name>Virtual PC Guy</name><uri>http://blogs.msdn.com/members/Virtual+PC+Guy.aspx</uri></author><category term="Hyper-V" scheme="http://blogs.msdn.com/virtual_pc_guy/archive/tags/Hyper-V/default.aspx" /><category term="Windows Server 2008 R2" scheme="http://blogs.msdn.com/virtual_pc_guy/archive/tags/Windows+Server+2008+R2/default.aspx" /></entry><entry><title>Deploying Windows XP Mode</title><link rel="alternate" type="text/html" href="http://blogs.msdn.com/virtual_pc_guy/archive/2009/10/26/deploying-windows-xp-mode.aspx" /><id>http://blogs.msdn.com/virtual_pc_guy/archive/2009/10/26/deploying-windows-xp-mode.aspx</id><published>2009-10-26T16:23:00Z</published><updated>2009-10-26T16:23:00Z</updated><content type="html">&lt;p&gt;We have recently published a very handy video / guide / set of scripts to help with anyone who needs to deploy either a standard or customized version of Windows XP mode to a large number of virtual machines.&lt;/p&gt;  &lt;p&gt;The first thing to look at is the deployment video – available here:&lt;/p&gt;  &lt;p&gt;&lt;a title="http://www.microsoft.com/downloads/details.aspx?FamilyID=f0ef9c63-2d2d-4f18-be39-57f8e794fe07" href="http://www.microsoft.com/downloads/details.aspx?FamilyID=f0ef9c63-2d2d-4f18-be39-57f8e794fe07"&gt;http://www.microsoft.com/downloads/details.aspx?FamilyID=f0ef9c63-2d2d-4f18-be39-57f8e794fe07&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Then you can go and grab the associated white paper / scripts from here:&lt;/p&gt;  &lt;p&gt;&lt;a title="http://www.microsoft.com/downloads/details.aspx?FamilyID=9f142a1a-a7b7-4d0b-bd56-d9627f39c14f" href="http://www.microsoft.com/downloads/details.aspx?FamilyID=9f142a1a-a7b7-4d0b-bd56-d9627f39c14f"&gt;http://www.microsoft.com/downloads/details.aspx?FamilyID=9f142a1a-a7b7-4d0b-bd56-d9627f39c14f&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;This will give you the necessary tools to do such things as:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Automate installation of Windows XP Mode&lt;/li&gt;    &lt;li&gt;Customize Windows XP Mode for your environment&lt;/li&gt;    &lt;li&gt;Build your own template Windows XP virtual machine for deployment in your own environment&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;Good stuff.&lt;/p&gt;  &lt;p&gt;Cheers,   &lt;br /&gt;Ben&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9912534" width="1" height="1"&gt;</content><author><name>Virtual PC Guy</name><uri>http://blogs.msdn.com/members/Virtual+PC+Guy.aspx</uri></author><category term="Windows 7" scheme="http://blogs.msdn.com/virtual_pc_guy/archive/tags/Windows+7/default.aspx" /><category term="Windows XP Mode" scheme="http://blogs.msdn.com/virtual_pc_guy/archive/tags/Windows+XP+Mode/default.aspx" /><category term="Windows Virtual PC" scheme="http://blogs.msdn.com/virtual_pc_guy/archive/tags/Windows+Virtual+PC/default.aspx" /></entry><entry><title>Windows Virtual PC / Windows XP Mode RTM now available for general download</title><link rel="alternate" type="text/html" href="http://blogs.msdn.com/virtual_pc_guy/archive/2009/10/22/windows-virtual-pc-windows-xp-mode-rtm-now-available-for-general-download.aspx" /><id>http://blogs.msdn.com/virtual_pc_guy/archive/2009/10/22/windows-virtual-pc-windows-xp-mode-rtm-now-available-for-general-download.aspx</id><published>2009-10-22T07:29:41Z</published><updated>2009-10-22T07:29:41Z</updated><content type="html">&lt;p&gt;Go and get it:&lt;/p&gt;  &lt;p&gt;&lt;a title="http://www.microsoft.com/windows/virtual-pc/download.aspx" href="http://www.microsoft.com/windows/virtual-pc/download.aspx"&gt;http://www.microsoft.com/windows/virtual-pc/download.aspx&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Cheers,    &lt;br /&gt;Ben&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9911163" width="1" height="1"&gt;</content><author><name>Virtual PC Guy</name><uri>http://blogs.msdn.com/members/Virtual+PC+Guy.aspx</uri></author><category term="Windows 7" scheme="http://blogs.msdn.com/virtual_pc_guy/archive/tags/Windows+7/default.aspx" /><category term="Windows XP Mode" scheme="http://blogs.msdn.com/virtual_pc_guy/archive/tags/Windows+XP+Mode/default.aspx" /><category term="Windows Virtual PC" scheme="http://blogs.msdn.com/virtual_pc_guy/archive/tags/Windows+Virtual+PC/default.aspx" /></entry><entry><title>Setting up Hyper-V with a UPS</title><link rel="alternate" type="text/html" href="http://blogs.msdn.com/virtual_pc_guy/archive/2009/10/22/setting-up-hyper-v-with-a-ups.aspx" /><id>http://blogs.msdn.com/virtual_pc_guy/archive/2009/10/22/setting-up-hyper-v-with-a-ups.aspx</id><published>2009-10-22T07:16:23Z</published><updated>2009-10-22T07:16:23Z</updated><content type="html">&lt;p&gt;People have asked me how you go about setting up a UPS (Uninterruptable Power Supply) with Hyper-V.&amp;#160; This is much easier than it sounds.&amp;#160; The first thing to understand is that when you shut down the physical computer, the virtual machines will be automatically put into a saved state.&amp;#160; Virtual machines that were running when the server shuts down will be started automatically when the physical computer starts back up.&lt;/p&gt;  &lt;p&gt;This all means that – for the most part – things “just work” when you connect a UPS and configure the management operating system like you would for a stand alone computer.&lt;/p&gt;  &lt;p&gt;Depending on your environment – there are some configuration changes that you may want to make:&lt;/p&gt;  &lt;ol&gt;   &lt;li&gt;&lt;strong&gt;Changing the automatic stop action        &lt;br /&gt;&lt;/strong&gt;      &lt;br /&gt;As I mentioned, Hyper-V will save state any running virtual machines when the physical computer shuts down.&amp;#160; Depending on how much memory is assigned to the virtual machine, and the software installed inside the virtual machine, you may prefer to have the virtual machine shut down instead.&amp;#160; I have gone with this option on my server at home:       &lt;br /&gt;      &lt;br /&gt;&lt;a href="http://blogs.msdn.com/blogfiles/virtual_pc_guy/WindowsLiveWriter/SettingupHyperVwithaUPS_3CF/StopAction_2.png" target="_blank"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="StopAction" border="0" alt="StopAction" src="http://blogs.msdn.com/blogfiles/virtual_pc_guy/WindowsLiveWriter/SettingupHyperVwithaUPS_3CF/StopAction_thumb.png" width="244" height="228" /&gt;&lt;/a&gt;       &lt;br /&gt;      &lt;br /&gt;&lt;/li&gt;    &lt;li&gt;&lt;strong&gt;Changing the automatic start action&lt;/strong&gt;       &lt;br /&gt;      &lt;br /&gt;Only virtual machines that were running when the system was shut down will be started automatically.&amp;#160; If you are paranoid, like me, you can go in and configure essential virtual machines to always start automatically – even if they were not running when the physical system was shut down:       &lt;br /&gt;      &lt;br /&gt;&lt;a href="http://blogs.msdn.com/blogfiles/virtual_pc_guy/WindowsLiveWriter/SettingupHyperVwithaUPS_3CF/StartAction_2.png" target="_blank"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="StartAction" border="0" alt="StartAction" src="http://blogs.msdn.com/blogfiles/virtual_pc_guy/WindowsLiveWriter/SettingupHyperVwithaUPS_3CF/StartAction_thumb.png" width="244" height="229" /&gt;&lt;/a&gt;       &lt;br /&gt;      &lt;br /&gt;You can also configure start up delays, to ensure that more important virtual machines are started first.       &lt;br /&gt;      &lt;br /&gt;&lt;/li&gt;    &lt;li&gt;&lt;strong&gt;Setting aside enough time for system shut down&lt;/strong&gt;       &lt;br /&gt;      &lt;br /&gt;This one is critical.&amp;#160; It can take a while for Hyper-V to shutdown as we are trying to save state / shut down a bunch of virtual machines.&amp;#160; For this reason you need to ensure that your system starts shutting down with enough battery life left in order to make it through the whole shut down process. &lt;/li&gt; &lt;/ol&gt;  &lt;p&gt;&lt;strong&gt;&lt;u&gt;My personal UPS story:&lt;/u&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;You would not believe, but living in north Redmond the power quality around here is lousy.&amp;#160; I often get strange power surges / flickers – and have to deal with half a dozen black-outs of one hour or more each year.&amp;#160; Needless to say I have lost a bunch of hardware over the years as a result of this.&lt;/p&gt;  &lt;p&gt;A while ago I went out and bought a nice beefy UPS to protect my Hyper-V server and all of my networking gear.&amp;#160; To start with I just hooked up the power and confirmed that I could run for about 30 minutes before running out of power.&amp;#160; I connected the USB monitoring cable, but did not setup any monitoring software, for a couple of reasons:&lt;/p&gt;  &lt;ol&gt;   &lt;li&gt;I got an APC UPS.&amp;#160; I love these guys for their hardware – I hate them for their software.&amp;#160; For that matter, I do not know of any UPS provider where I would be happy to install their monitoring software on my servers. &lt;/li&gt;    &lt;li&gt;I am lazy. &lt;/li&gt; &lt;/ol&gt;  &lt;p&gt;Recently, when I was performing some hardware maintenance on in my Hyper-V server I decided to go and have a look in the device manager to see what Windows thought about my UPS.&amp;#160; Much to my surprise I saw that Windows had detected the presence of a UPS battery with no intervention from me:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/virtual_pc_guy/WindowsLiveWriter/SettingupHyperVwithaUPS_3CF/device%20manager_2.png" target="_blank"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="device manager" border="0" alt="device manager" src="http://blogs.msdn.com/blogfiles/virtual_pc_guy/WindowsLiveWriter/SettingupHyperVwithaUPS_3CF/device%20manager_thumb.png" width="244" height="174" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;Once I noticed this I decided to have a look around – and I discovered that Windows had enabled standard power support – and was acting like my server was essentially a really big clunky laptop.&amp;#160; I had a battery icon in the task bar that accurately reflected the amount of charge in my battery, and when I disconnected power from the UPS – Windows immediately knew about it. &lt;/p&gt;  &lt;p&gt;Next I opened the power policy settings and configured my system to get a low battery alert when the battery was at 75% charged, and to shut down when the battery reached 50% charged:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/virtual_pc_guy/WindowsLiveWriter/SettingupHyperVwithaUPS_3CF/power%20plan_2.png" target="_blank"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="power plan" border="0" alt="power plan" src="http://blogs.msdn.com/blogfiles/virtual_pc_guy/WindowsLiveWriter/SettingupHyperVwithaUPS_3CF/power%20plan_thumb.png" width="229" height="244" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;I have since tested this – and everything works perfectly – all with no need for anything other than the “in-box” capabilities of Windows Server 2008 R2.&amp;#160; Neat!&lt;/p&gt;  &lt;p&gt;Cheers,    &lt;br /&gt;Ben&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9911158" width="1" height="1"&gt;</content><author><name>Virtual PC Guy</name><uri>http://blogs.msdn.com/members/Virtual+PC+Guy.aspx</uri></author><category term="Hyper-V" scheme="http://blogs.msdn.com/virtual_pc_guy/archive/tags/Hyper-V/default.aspx" /><category term="Windows Server 2008 R2" scheme="http://blogs.msdn.com/virtual_pc_guy/archive/tags/Windows+Server+2008+R2/default.aspx" /></entry><entry><title>Hotfix needed to move R2 differencing disk to Windows Server 2008</title><link rel="alternate" type="text/html" href="http://blogs.msdn.com/virtual_pc_guy/archive/2009/10/16/hotfix-needed-to-move-r2-differencing-disk-to-windows-server-2008.aspx" /><id>http://blogs.msdn.com/virtual_pc_guy/archive/2009/10/16/hotfix-needed-to-move-r2-differencing-disk-to-windows-server-2008.aspx</id><published>2009-10-17T00:26:52Z</published><updated>2009-10-17T00:26:52Z</updated><content type="html">&lt;p&gt;A virtualization MVP recently bought this to my attention:&lt;/p&gt;  &lt;p&gt;In Windows Server 2008 R2 there was a minor change to the format of differencing virtual hard disks.&amp;#160; As a result you will need to apply an update to Windows Server 2008 if you want to move differencing disks from Windows Server 2008 R2 to Windows Server 2008.&lt;/p&gt;  &lt;p&gt;You can download this update from here:&lt;/p&gt;  &lt;p&gt;&lt;a title="http://support.microsoft.com/kb/971677" href="http://support.microsoft.com/kb/971677"&gt;http://support.microsoft.com/kb/971677&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Note that this applies to Windows Server 2008 and Windows Server 2008 SP2 (not to Windows Server 2008 R2).&amp;#160; If you do not have this update installed and you try to use a differencing disk created with Windows Server 2008 R2 you will receive an error message that states that the virtual hard disk is corrupted or unreadable.&lt;/p&gt;  &lt;p&gt;Cheers,   &lt;br /&gt;Ben&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9908432" width="1" height="1"&gt;</content><author><name>Virtual PC Guy</name><uri>http://blogs.msdn.com/members/Virtual+PC+Guy.aspx</uri></author><category term="Hyper-V" scheme="http://blogs.msdn.com/virtual_pc_guy/archive/tags/Hyper-V/default.aspx" /><category term="Windows Server 2008 R2" scheme="http://blogs.msdn.com/virtual_pc_guy/archive/tags/Windows+Server+2008+R2/default.aspx" /></entry><entry><title>Hyper-V Hotfix for "0x00000101 - CLOCK_WATCHDOG_TIMEOUT" on Nehalem systems</title><link rel="alternate" type="text/html" href="http://blogs.msdn.com/virtual_pc_guy/archive/2009/10/16/hyper-v-hotfix-for-0x00000101-clock-watchdog-timeout-on-nehalem-systems.aspx" /><id>http://blogs.msdn.com/virtual_pc_guy/archive/2009/10/16/hyper-v-hotfix-for-0x00000101-clock-watchdog-timeout-on-nehalem-systems.aspx</id><published>2009-10-16T18:20:52Z</published><updated>2009-10-16T18:20:52Z</updated><content type="html">&lt;p&gt;We have just released a new hotfix for Windows Server 2008 R2 that address the issue that users were getting a bluescreen of death on Intel Xeon 5500 series processor-based computers with the following text:&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;0x00000101 &lt;var&gt;(&lt;var&gt;parameter1&lt;/var&gt;, 0000000000000000, &lt;var&gt;parameter3&lt;/var&gt;, 000000000000000c)        &lt;br /&gt;&lt;/var&gt;CLOCK_WATCHDOG_TIMEOUT&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;You can download the hotfix from here: &lt;a title="http://support.microsoft.com/kb/975530" href="http://support.microsoft.com/kb/975530"&gt;http://support.microsoft.com/kb/975530&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;For the curious, this issue is actually caused by a bug (or in Intel terms “erratum”) that causes these processors to generate spurious interrupts.&amp;#160; You can read about this in the latest Intel documentation for this process series: &lt;a href="http://www.intel.com/assets/pdf/specupdate/321324.pdf"&gt;http://www.intel.com/assets/pdf/specupdate/321324.pdf&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Cheers,   &lt;br /&gt;Ben&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9908314" width="1" height="1"&gt;</content><author><name>Virtual PC Guy</name><uri>http://blogs.msdn.com/members/Virtual+PC+Guy.aspx</uri></author><category term="Hyper-V" scheme="http://blogs.msdn.com/virtual_pc_guy/archive/tags/Hyper-V/default.aspx" /><category term="Windows Server 2008 R2" scheme="http://blogs.msdn.com/virtual_pc_guy/archive/tags/Windows+Server+2008+R2/default.aspx" /></entry></feed>