Occasionally you may come across a requirement for an App-V application to write to the native registry (i.e. that of the desktop which the App-V client is installed on).
By default all App-V applications write their registry keys and values to the virtual registry specific to that published App-V.
That same virtual registry may contain registry keys created during the installation and sequencing of an application. It is possible to exclude certain registry paths during the sequencing, but any new keys will still be created in the virtual registry at exection time.
An App-V application can see both the virtual registry and the native registry (also known as merge).
If you require the App-V application to read from the native registry, App-V already does this by default, it sees a merged view of both native and virtual registry.
However if you require the App-V application to write to the native registry instead of the virtual registry, then that requires an exclusion on the App-V client.
The following reg key in App-V 5.x allows administrators to specify registry paths that App-V packages can write to (instead of the virtual registry).
HKEY_LOCAL_MACHINE\Software\Microsoft\AppV\Subsystem\VirtualRegistry
PassThroughPaths (REG_MULTI_SZ)
However note that this key applies to ALL App-V packages published to that computer, you cannot be specific. So all App-V packages will then be able write to that path. So you want to keep these specific and to a minimum where possible.
For reference by default the following native registry paths can be written to by all App-V packages:
HKEY_CURRENT_USER\SOFTWARE\Classes\Local Settings\Software\Microsoft\Windows\CurrentVersion\AppModel
HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Local Settings\Software\Microsoft\Windows\CurrentVersion\AppModel
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\WINEVT
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\eventlog\Application
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\WMI\Autologger
HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\Internet Settings
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Perflib
HKEY_LOCAL_MACHINE\SOFTWARE\Policies
HKEY_CURRENT_USER\SOFTWARE\Policies
If you require to add an additional path it should be entered on a seperate line. In my case I was required to add the following key to allow an App-V application to perform some very specific integration with Internet Explorer for a bespoke application vendor.
HKEY_CURRENT_USER\SOFTWARE\Microsoft\Internet Explorer\Main
To deploy this to all computers in the domain a simple group policy preference was created to replace the reg key.
Note: Ensure you include the defaults plus your additional reg path.
Key: HKEY_LOCAL_MACHINE\Software\Microsoft\AppV\Subsystem\VirtualRegistry
Value: PassThroughPaths (REG_MULTI_SZ)
Value Data:
HKEY_CURRENT_USER\SOFTWARE\Classes\Local Settings\Software\Microsoft\Windows\CurrentVersion\AppModel
HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Local Settings\Software\Microsoft\Windows\CurrentVersion\AppModel
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\WINEVT
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\eventlog\Application
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\WMI\Autologger
HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\Internet Settings
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Perflib
HKEY_LOCAL_MACHINE\SOFTWARE\Policies
HKEY_CURRENT_USER\SOFTWARE\Policies
HKEY_CURRENT_USER\SOFTWARE\Microsoft\Internet Explorer\Main
Thats all there is to it, its pretty strightforward once you understand it. I don't expect the native registry to be written to by many applications and it's virtual and native application integration that will drive the need for the use of the pass through reg paths.
Share this blog post on social media:
TweetAll advice, installation/configuration how to guides, troubleshooting and other information on this website are provided as-is with no warranty or guarantee. Whilst the information provided is correct to the best of my knowledge, I am not reponsible for any issues that may arise using this information, and you do so at your own risk. As always before performing anything; check, double check, test and always ensure you have a backup.