App-V v4.6 Virtual Registry Bug

I came across a strange issue today whilst sequencing Oracle Developer Suite 10g.  Sequencing appeared to work at first but some of the shortcuts were not working correctly.  Upon opening regedit in the bubble to troubleshoot I found that most of my registry settings had disappeared!  Here is what the registry was supposed to look like:

Real Registry

And here is what I saw from inside the virtual environment:

Virtual Registry

It appeared that the App-V client had helpfully thrown out all of my settings and subkeys except for one suspicious key with a path to a user variable, sitting in the HKLM registry.  Thanks!

Whilst no developer in their right mind would normally store user specific settings under HKLM, this is Oracle we are talking about here, so common sense does not apply.

I experimented by removing this REPORTS_TMP key in the sequencer, and all of the missing values came back!  If I put any user specific variables in, the same would happen, %CSIDL_APPDATA%, %CSIDL_DESKTOPDIRECTORY%, etc – but variables such as %CSIDL_PROGRAM_FILES% worked fine.

So, this is weird, but I had a workaround – delete the problematic key in the sequencer and add <REGISTRY> tags in the OSD files to bring the setting back.  But I did a quick test on my own environment, fully patched to v4.6 SP2 Hotfix 1 to see if I could replicate it.  I created a new sequence containing just the following registry keys:

[HKEY_LOCAL_MACHINE\Software\Wow6432Node\TEST32]
"Normal String 1"="Hello"
"Normal String 2"="World!"
"User Folder 1"="C:\\Users\\testadmin\\AppData\\Local\\Temp"
"User Folder 2"="C:\\Users\\testadmin\\AppData\\Roaming"

[HKEY_LOCAL_MACHINE\Software\TEST64]
"Normal String 1"="Hello"
"Normal String 2"="World!"
"User Folder 1"="C:\\Users\\testadmin\\AppData\\Local\\Temp"
"User Folder 2"="C:\\Users\\testadmin\\AppData\\Roaming"

[HKEY_CURRENT_USER\Software\TEST]
"Normal String 1"="Hello"
"Normal String 2"="World!"
"User Folder 1"="C:\\Users\\testadmin\\AppData\\Local\\Temp"
"User Folder 2"="C:\\Users\\testadmin\\AppData\\Roaming"

And also a couple of desktop shortcuts pointing to %CSIDL_SYSTEM%\regedt32.exe (32-bit regedit) and %SFT_SYSTEM32_X64%\regedt32.exe (64-bit regedit) to help troubleshoot.  Here are the keys in the sequencer:

Sequencer

After importing into the client, the HKCU registry settings are displaying properly:

HKCU Results

But both 32-bit and 64-bit portions of the HKLM keys were only displaying the keys containing user-related variables:

Test32 Results

Test64 Results

So, bear this in mind – if you’re troubleshooting and are not seeing much in the HKLM registry except for some user directories, look for this.  Delete the keys from the sequence and add them either by <REGISTRY> tags if you don’t mind them being reset on each launch, or by using a pre-launch script if you think that the users may wish to change the values themselves when using the application.

3 responses on “App-V v4.6 Virtual Registry Bug

    1. Actually it states the test was done on v4.6 SP2 with Hotfix 1 (http://support.microsoft.com/kb/2799699). I have put that in bold to make it more obvious!

      I discovered it on v4.6 SP1 Hotfix 8, I don’t know how far back it was introduced.

  1. Marc Jolley

    Thank you! I was scratching my head for most of the morning over this, and couldn’t figure out why I could only see two registry values in a key which contained twenty, and none of the subkeys.

    It turned out the two visible values contained a path to the installing user’s desktop, as an “Install Source” path. Removing those two values solved the problem.

    I don’t think I’d have figured that out without the help of this article – so thanks again!!

Leave a Reply