One of the most common requests I get from customer and partners is – When will VMware View support Windows 2K8 as Guest OS?
As most of you probably know Microsoft does not provide SPLA licensing model for Windows 7 to allow customers and service providers to create Desktop-as-a-Service offerings using Enterprise grade VDI solutions such as Horizon View. However, Windows Server 2K8 does provides SPLA licensing model and if those customers and service providers are able to deliver Windows Server 2K8 combined with the new Horizon View Multi-VLAN feature they could effectively service a large part of the DaaS market without incurring into Microsoft licensing issues.
Please note that I am not inferring that Horizon View with Windows 2K8 is effectively Desktop-as-a-Service, like some of the vendors out there. I personally believe DaaS is much more than simply delivering Win2K8 desktops, and that it should embrace key important concepts such as Mobility, Portability, Automated Provisioning, Identify management, Federation, multi-tenancy at all layers, chargeback, and an easy-to-use self-service web portal where user can consume services. This is subject for another article. However, the solution below, despite unsupported, will effectively put customers and service providers in alignment with Microsoft licensing.
If you are an avid reader of my blog you will remember that I published back in 2012 a guide on how How to Access Windows 2K8 Server via PCoIP. That hack is currently being used by many customers, but it was not effectively easy to deploy because it required the administrator to hack into the VMware View database and manually add each desktop. Furthermore, Linked Clones and many other features such as printing and USB redirection were not working. But, you don’t need to go back to my old article because all you need is here and in a much simpler way.
I cooked up something TOTALLY UNSUPPORTED BY VMWARE that will allow customers and partners to provision VMware View desktops using Windows 2K8 Server, PCoIP, Linked Clones, ThinPrint, SmartCards, Persona Management and USB redirection; all in a natural and automated fashion.
Important Note: The techniques below has been only tested by me for the latest VMware View 5.1 release.
The only changes you will have to make to get the solution working is to the standard VMware View Agent 64-bit before you install it on your parent VM. VMware View Agent uses Microsoft Installer to run a series of validations to understand what components should or should not be installed and what conditions should follow. For Windows 2K8 specifically, VMware View agent will only allow Terminal Services Access Pools with the connection protocol being RDP. So, first we need to open and hack the View Agent.
You will need to download Orca. Orca MSI Editor allows you to edit the properties of any MSI file. With this tool, you can change the title and text within the installer and look at how and where the files are delivered. Once installed you can right-click any MSI and select Open with Orca. This tool used to be a part of Microsoft Developer Tools but is now retired and no longer supported.
Download Orca from here.
The steps outlined below are not supported by VMware. I recommend testing in development environment. If you decide to test or implement you are doing it on your own risk.
- On a Windows 2K8 R2 Server with latest VMware Tools installed execute the installation VMware View 5.1 Agent package (VMware-viewagent-x86_64-5.1.2-928164). Do not click Install or Next.
- Go to %temp% folder, typing %temp% at the Run prompt.
- Find the folder containing the unpacked installation files and copy them to a temporary folder on your desktop.
- Using the Orca utility open ‘VMware View Agent64.msi’ file existing in the temp folder.
- Navigate to ‘Condition’ table.
- Delete the conditions from PCoIP (0), SVIAgent (0), SmartCard (0), ThinPrint (0), and USB (0) features. Delete only the content of the condition, not dropping the entire row. Save the changes.

- In ControlEvent table set:
- Dialog CustomSetup, argument ConnectionServer, set condition to 0
- Dialog CustomSetup, argument ReadyToInstall, set condition to 1

- In InstallExecuteSequence Table set:
- Action VM_AddLDAPMachineEntry_SD.2EDC2186_29E9_4662_86CD_26051967D0CA, set condition to 0
- Action VM_AddLDAPMachineEntry.2EDC2186_29E9_4662_86CD_26051967D0CA, set condition to 0

- In Registry Table set:
- Save the VMware View Agent64.msi and copy all the files to a temporary folder in your Windows 2K8 VM.
- Execute ‘VMware View Agent64.msi’ and go through the install normally.
- This is a critical step to ensure VMware View Composer is will customize the desktop and bypass the OS version check. Replace C:\Program Files (x86)\Commom Files\VMware\View Composer Guest Agent\vmware-svi-ga.exe with the patched file you download from here.

- Open the Windows Device Manager; go to ‘Display Adapters’ and select ‘Update Driver…’
Select ‘Browse my computer for driver software’ and ‘Let me pick from a list of device drivers on my computer’. (optionally, if you see the VMware 3D driver available in ‘Display Adapters’ you may select it and skip step 13. - On the following screen select ‘Have Disk…’ and select the wddm_video driver at C:\Program Files\Common Files\VMware\Drivers\wddm_video\vm3d.inf. Without changing the video driver PCoIP will not work.
- We are almost done! The next procedure will ensure that new View Composer internal disk goes online when attached to the Linked Clone VM. Open command prompt and type DISKPART.exe. Now type DISKPART > san policy=OnlineAll. Type exit.

- Close the command prompt window shutdown the server.
- Next you will need to change the VM OS type to Windows 7 (64-bit) so VMware View can recognize it as a valid Parent VM for View Composer.

- Take a Snapshot of the VM and you are done!
From now on just create desktops pools the same way you always do. Use Automated Provisioning, Dedicated or Floating, Horizon View Composer linked clones. Here is my Windows 2K8 configuration:
This article was first published by Andre Leibovici (@andreleibovici) at myvirtualcloud.net.






39 comments
Skip to comment form ↓
Doug Youd
03/16/2013 at 4:46 am (UTC -7) Link to this comment
Nice! Thanks for posting, that will be very handy for us. Getting thin print to work had us scratching our heads a little.
Andre Leibovici
03/16/2013 at 8:56 am (UTC -7) Link to this comment
[UPDATE] Please note that this method does not require sysprep to be used. QuickPrep will work without any issues.
Andre Leibovici
03/16/2013 at 9:02 am (UTC -7) Link to this comment
To give Windows 7 look and feel to your Windows Server 2K8 R2 Guest OS refer to my article:
How to give Win Server 2K8 R2 a Win7 Look & Feel in VMware View
http://myvirtualcloud.net/?p=2822
Bostjan
03/16/2013 at 4:32 pm (UTC -7) Link to this comment
Can anyone confirms that thinprint actually works ?
In our case we get printers mapped into VDI but printing itself is not working.
Andre Leibovici
03/17/2013 at 8:09 am (UTC -7) Link to this comment
Bostjan, upon deeper tests I noticed I am having the same issues with print re-direction, but I think I know what is happening. I’ll execute some tests and see if I can fix it, and perhaps publish the solution here.
Ben S
03/17/2013 at 8:27 am (UTC -7) Link to this comment
Awesome! Thanks again for this. I’m building the pool now and all went well. Will test later today and next week.
Mega
03/17/2013 at 2:51 pm (UTC -7) Link to this comment
Hi Andre,
Could you say me how you found it was necessary to change those 24 hex-values to make the vmware-svi-ga.exe working with W2K8R2 ?
Sorry, my English is not excellent.
Thanks for your help.
Bostjan
03/18/2013 at 1:53 am (UTC -7) Link to this comment
Andre, please let us know if you find out why thinprint is not working.
Mitja
03/18/2013 at 2:25 am (UTC -7) Link to this comment
@Mega, disassembler or debugger can be used. Other solution would be not to patch the .exe, but to use a solution that would convince the .exe that it’s not running on a Windows Server, but rather on a Windows 7 OS.
Bryan Salek
03/18/2013 at 5:45 am (UTC -7) Link to this comment
Awesome! Thanks Andre!
Megatubes
03/18/2013 at 6:20 am (UTC -7) Link to this comment
@Mitja : thanks, it was what I thought but I’m interested to know how Andre could identify that specific values
.
Boomerang
03/18/2013 at 8:56 am (UTC -7) Link to this comment
How about a nice little script for the lazy among us ?
Andre Leibovici
03/18/2013 at 11:55 am (UTC -7) Link to this comment
@Boomerang (David), how about you create one for us and publish it here
Andre Leibovici
03/18/2013 at 12:14 pm (UTC -7) Link to this comment
@Bryan Salek, you are welcome!! I know how important this is for many out there.
Andre Leibovici
03/18/2013 at 12:15 pm (UTC -7) Link to this comment
@Megatubes The executable had to be disassembled and tracked for the OS version check error before identifying where to make the changes.
Ronny
03/21/2013 at 12:34 pm (UTC -7) Link to this comment
Hi Andre,
Thx for the post ! The machines provisioned without any error. However I only seem to be able to use RDP as protocol. When I select PCoIP it throws me the error “this desktop does not support the requested display protocol” . I ‘ve first installed the VMtools and then selected the wddm_video driver. Any idea why PCoiP isn’t working ?
ronny
Andre Leibovici
03/21/2013 at 2:49 pm (UTC -7) Link to this comment
@Ronny, did you change the VM OS in vSphere? Also check that your broker and pools are correctly configured. I did not have this error when setting up my environment.
Andre
Ronny
03/21/2013 at 3:27 pm (UTC -7) Link to this comment
@Andre, Thx for the quick response. Bij double checking the entire procedure from top to bottom I discovered that I altered the wrong line (PCoiP 1000) in the conditions section. Therefor I didn’t get the option “PCoiP server” during the installation process. After I corrected the mistake and created a new pool everythings works like a charm. I’d like to thank you for this awsome post!
Andre Leibovici
03/24/2013 at 9:17 am (UTC -7) Link to this comment
@Ronny, you are welcome. I would love you to share with us how you are using the solutions and what the use-case is.
Ronny
03/25/2013 at 1:50 am (UTC -7) Link to this comment
@Andre, I’m setting up a proof of concept for a SaaS provider. Until now they have been using Citrix and MS RDS to provide full desktops to their end users. VDI offers a far better user experience and is more flexible in terms of personalization (eg: installing end user software ,limitations / coexistence with other software, specific settings etc…). Unfortunately due to the MS licensing policy (SPLA) desktop OS’s can only run on dedicated hardware in the datacenter. Xendesktop offers a solution to distribute server OS as a desktop but fails in the auto provisioning etc… Vmware on the other hand despite its superior technology wasn’t able to provide server OS as a desktop.
Your workaround allows us to use VMware and still being compliant with the MS policy…
We ‘ve discussed this with VMware and at this point they don’t officially support the method but will provide a supported solution soon.
Marco Cornelissen
03/25/2013 at 4:48 am (UTC -7) Link to this comment
@Andre,I implemented your solution in a testing environment. The creation of the Linked Clone VDI’s works perfectly! Only the assignment of desktops in a Floating environment seems to have a big security problem. When I have 2 VDI’s in a pool and both have an user assigned to them, a third user is not getting a “No resources available” message like it should. Instead, it just takes over one of the occupied VDI’s. Can you verify if you experience the same problem?
Andre Leibovici
03/25/2013 at 1:03 pm (UTC -7) Link to this comment
@Marco That actually seems to be a issue not related to the Win2K8 solution. Why do you have users assigned to desktops in a floating pool? Do you know if the same thing happens with Windows 7 or 8 desktops in a floating pool?
Andre Leibovici
03/25/2013 at 1:06 pm (UTC -7) Link to this comment
@Ronny, thanks for sharing with us. The inability to auto provision Windows Server Guest OS using XenDesktop is a news to me. For the printing, if they require, look at ThinPrint Professional from Cortado.
Marco Cornelissen
03/25/2013 at 4:04 pm (UTC -7) Link to this comment
@andre. We have an environment with about 300 users but only around 15 users need a desktop at one given time. So floating pools seems the best choice. With windows 7 desktops it works without any problems.
ronny
03/26/2013 at 10:56 am (UTC -7) Link to this comment
@Andre: I’ve implemented the Cortado Thin Print engine in het master image and after the recompose printing is no longer an issue. So far the POC looks good !
Andre Leibovici
03/26/2013 at 8:36 pm (UTC -7) Link to this comment
@ronny That’s great news. Thanks for sharing with us.
Andre Leibovici
03/26/2013 at 8:38 pm (UTC -7) Link to this comment
@Marco, I understand the need for floating pools, but don’t know why you are assigning desktop to users if the desktops are floating and get constantly refreshed.
Marco Cornelissen
03/27/2013 at 2:13 am (UTC -7) Link to this comment
@Andre, Hi Andre, When I talk about assignment I mean automatic (dynamic) assignment by View. So again the scenario:
I have two available Desktops in a floating pool. User one connects and gets automaticly assigned to the first Desktop. Then users two connects and gets assigned to the second Desktop. Now when the third user connects it is automaticly assigned to the first Desktop that was already beeing used by the first User. It just hijacks the Desktop and sees whatever user one was doing on the Desktop.
So there is no fixed desktop assignment.
jgrusewski
03/27/2013 at 3:48 pm (UTC -7) Link to this comment
Does anybody have done this trick with view 5.2 I cannot do step 12 which is crucial but the patch is for 5.1 doe you also have an updated version ?
ronny
03/28/2013 at 4:30 am (UTC -7) Link to this comment
@jgrusewski : Yse I’vd used 5.2 and that works just fine….
Andre Leibovici
03/28/2013 at 8:52 am (UTC -7) Link to this comment
Has anyone successfully tested smartcards with the proposed solution?
Andre Leibovici
04/08/2013 at 12:05 pm (UTC -7) Link to this comment
I would like to update everyone that the same changes made on View 5.1 will also work on Horizon View 5.2. Additionally, you will be able to install the Horizon View Feature Pack to enable HTML5 access and Unity Touch interaction without any additional changes to the installation package.
regards
Unai
04/25/2013 at 5:11 am (UTC -7) Link to this comment
Hello
First all, Thanks Andre for the guide, it works great !!
Does anyone solved the thinprint issue? Or the only way is to use cortado thinprint for example?
regards
Pete Rod
04/25/2013 at 6:20 am (UTC -7) Link to this comment
Has anyone else had any success on View 5.2? I’ve followed this guide and View still only sees the VM as a 2008R2 (Datacenter). I’ve also checked the Database and do not see the machine showing up in the servers OU – hence I can’t check the PAE setting.
Unai
04/25/2013 at 7:03 am (UTC -7) Link to this comment
Heya Pete
Have you changed the properties of the virtual machine, setting it as windows 7? (step 17)
Pete Rod
04/25/2013 at 8:17 am (UTC -7) Link to this comment
Ya, I did. I even shutdown the machine and verified again…
Andre Leibovici
04/25/2013 at 4:09 pm (UTC -7) Link to this comment
Unai, you will not be able to print because the print driver shipped with View Agent does not support Windows Server GuestOS. You need to download and install Cortado ThinPrint Universal drivers and server.
-Andre
Rob G
05/07/2013 at 6:14 pm (UTC -7) Link to this comment
Can someone provide guidance as to how they got thinprint to actually work. There are tons of thin print products and some do not work with server 2008. What drivers do you need and what is the process? Any help is greatly appreciated. Great article!!
ronny
05/08/2013 at 1:08 am (UTC -7) Link to this comment
@Rob, I’ve used the Cortado thin Print engine with the terminal server option Therefor printing via PCoIP doesn’t work (only via RDS). But at this is already a start.