I was recently required to raise the AD domain and forest functional level in order to implement Windows Hello for Business, which requires a minimum domain functional level of 2008 R2. Microsoft describe raising the AD functional levels as a low risk change and in total these steps took about an hour, with the actual changing levels taking a few seconds and replication taking about 20 minutes in total.

So, to raise the functional levels from 2008 to 2012 R2 (the version of all of the domain controllers), here’s what I did.

  1. Create a system state backup of a domain controller. I did this using Windows Server Backup mmc which wasn’t installed on the server, so I added the feature first. This article outlines the steps simply: http://www.tomsitpro.com/articles/back-up-windows-server-2016-domain-controller,1-3423.html
  2. Take a VM snapshot of a domain controller.
  3. Identify the PDC in the domain by running netdom /query fsmo
  4. Raise the domain functional level using the steps in this petri article: https://www.petri.com/raising-windows-server-2008-active-directory-domain-and-forest-functional-levels
  5. On all of the domain controllers, check the level by running powershell cmd (Get-ADDomain).DomainMode. When all reported Windows2012R2Domain, continue.
  6. Raise the forest functional level using the steps in this petri article: https://www.petri.com/raising-windows-server-2008-active-directory-domain-and-forest-functional-levels
  7. On all of the domain controllers, check the level by running powershell cmd (Get-ADForest).ForestMode. When all reported Windows2012R2Forest, continue.
  8. Check that I could restart and logon to a computer. Check that when I changed an AD group that the change replicated to all domain controllers.

Acer appears to be lagging far behind vendors like HP, Dell and most others in their BIOS utilities especially for remote or build tine customisation. Recently I needed to ensure that SecureBoot was enabled on all Acer Spin 7 laptops running Windows 10. The main Acer utility H2OFFT-Wx64.exe (which you can find by extracting the latest ZDV_xxx.exe) has a few command line switches but nothing documented to enable or disable SecureBoot.

However, it appears that simply running ZDV_114.exe on a suitable machine (right model, plugged in, at least 50% charged), will enable SecureBoot. Luckily for me, I wanted it enabled. Now, this process will work if you are upgrading the BIOS to a newer version. If you want to downgrade or stay at the same version, hex.ro/wp/blog/insydeflash-bios-downgrade/ suggests modifying the platform.ini file (also extracted from H2OFFT-Wx64.exe) and ensuring the file includes


Now, if deploying this change remotely, please be aware that a reboot is required and if you are already using BitLocker, you will absolutely need to suspend or disable it first.

As part of some testing, I’ve checked out what happens in the scenario where you remove a user from a delivery group while the user has an active session. The current session continues to run normally, but the user won’t have that session available in their Web Interface.

I’ve recently come across the error described in this article: http://support.citrix.com/article/CTX200551, the article isn’t quite clear on the service to restart. The service you want is “Citrix PVS Soap Server”, rather than “the SOAP service”

I’ve recently been dealing with installing and configuring two HP products to work together – HP UFT 12 and HP ALM Platform Loader 12.2. The key challenge was working in a locked down environment which prevented the per user installation of ALM Platform Loader. ALM usually installs an ActiveX control into the user’s profile, but as this wasn’t an option, I modified the ALM-Client.ini file to refer to a location in C:\Program Files (x86) that I copied all of the resultant files to. You still need to make sure the ALM-Platform-Loader.12.ocx file is registered and that your executables are whitelisted. ALM will also want to execute some files in %temp%, so be aware of this.

UFT installs through a more typical local msi install and has some of the same issues of whitelisting in a locked down environment. There are some links from within ALM to UFT, but the key one I was concerned with was connecting to ALM from UFT. In particular, as a regular user, only 1 site could be connected to at a time. This turned out to be due to the WebClient.dll file being registered from the folder related to the site. A regular user couldn’t change the registry value, so could only connect to 1 site. This came up when the test site worked fine, but production didn’t! The registry value you need to change when switching between sites is


Something especially lousy about this is that because this is a file registration, users need to have access to all of HKEY_CLASSES_ROOT, so realistically it CAN’T be changed dynamically. However, if you change permissions on this key and write a script to modify the key at launch, you can switch between sites, even if not within one session. I didn’t need to do this as we were able to just change the key to point to the production server.

I’ve recently been dealing with a problem with Adobe Acrobat Pro where the Adobe PDF Printer won’t install and work correctly. I’ve worked through a number of steps and have gotten the driver and printer to the point where it will install and print to any locally accessible location (not a network location).

Just like a bunch of others, installing Acrobat completed successfully and the program works, but the Adobe PDF printer isn’t available in other programs. I tried some of the standard steps, adding the printer manually, using the printUI.dll command line options, but I’d still get an error like Element not found

Reading the AdobePDF.inf file and finding that it required core printer driver {D20EA372-DD35-4950-9ED8-A6335AFE79F1} and finding that it was missing led me to track down missing or different items on a computer that was working. I gather that the Adobe items listed below would be delivered by the installation if the Core Printer drivers were correctly in place. I should note that some of the files copied in the first step were Adobe files, but some are PS* files. Here is a list of the files copied in that step

Mode LastWriteTime Length Name
—- ————- —— —-
-a— 23/09/2012 5:43 PM 66 ADGELP.INI
-a— 23/09/2012 5:43 PM 55432 AdobePdf.dll
-a— 23/09/2012 5:43 PM 26768 AdobePDFUI.dll
-a— 28/06/2015 9:50 AM 20292 ADPDF9.BPD
-a— 23/09/2012 5:43 PM 28058 ADPDF9.PPD
-a— 23/09/2012 5:43 PM 39048 ADREGP.DLL
-a— 23/09/2012 5:43 PM 1294472 ADUIGP.DLL
-a— 22/08/2013 10:31 PM 2899968 PrintConfig.dll
-a— 5/12/2014 3:01 PM 885248 PS5UI.DLL
-a— 19/06/2013 12:44 AM 26038 PSCRIPT.HLP
-a— 19/06/2013 1:09 AM 1062732 PSCRIPT.NTF
-a— 5/12/2014 3:01 PM 649216 PSCRIPT5.DLL
-a— 19/06/2013 1:09 AM 1293180 PSCRPTFE.NTF
-a— 19/06/2013 1:09 AM 5561 PS_SCHM.GDL

The steps I’ve undertaken to get a functional Adobe PDF printer created are:

1. Copied Adobe files from “C:\Windows\System32\spool\drivers\x64\3” on a working PC
2. Copied adobepdf.inf_amd64_8372a4bb5d1330af.cab from “C:\Windows\System32\spool\drivers\x64\PCC” on a working PC
3. Added registry keys in [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Print\PackageInstallation\Windows x64\CorePrinterDrivers\{D20EA372-DD35-4950-9ED8-A6335AFE79F1}]
4. Added registry keys in [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Print\Environments\Windows x64\Drivers\Version-3\Adobe PDF Converter]
5. I tried restarting the Print Spooler, but could only add the printer manually, not using the rundll32 printui.dll,printUIEntry commands
6. Added the registry keys in [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Print\Printers\Adobe PDF]
7. Restarted print spooler

The two main things I’m not sure about are why the Core Print Drivers weren’t installed and functional and why a command like rundll32 printui.dll,printUIEntry /if /b “Adobe PDF” /f”C:\Program Files (x86)\Adobe\Acrobat 11.0\Acrobat\Xtras\AdobePDF\AdobePDF.inf” /r “Documents/*.pdf” /m “Adobe PDF” didn’t work automatically.

Coming across this error
“The return code from the Adobe Installer Process is (31).Stopping the installation process.”

led me onto this page from Adobe indicating 31 means not enough space: