Watch Out For the Virtual Store

Had an interesting application deployment issue. The issue was described to me like this:

  • We deploy an upgrade to the application, which is an ACCESS database app (ah the wonderful world of enterprise applications) that connects to a backend SQL. The file being replaced is a .MDB file located under C:\Program Files
  • When deployed via SCCM the version of the application doesn’t change
  • However if we copy the exact same file as the user used by the SCCM package into C:\Program Files, the application shows the new version
  • It has been confirmed Users group has been given Full Control of the folder containing the MDB file
  • In both cases – working & broken – the file in Windows Explorer shows exact same file date/size

The broken example showed this:

image

and

image

After user manually copied the .MDB file which was EXACTLY the same into the C:\Program Files location, the application worked.

Finally the last clue – which is enough to tell you the cause – when another user logged on and copied the file, it still didn’t work!

What’s going on.

A quick ProcMon (http://live.sysinternals.com/ProcMon.exe) quickly demonstrated the cause:

The MDB is not being loaded from Program Files directory at all. It’s being loaded from user’s virtual store, located under %LOCALAPPDATA%\VirtualStore for the file system…

image

This occurred, because I guess in some past time users attempted manual upgrade. Without local admin it got redirected into Virtual Store. So they were now using a per-user copy of the application. When SCCM upgraded the application it ran as SYSTEM and replaced the version in Program Files; but users continued on with their old copy in the user profile.

Many times virtualization will work to your benefit saving you time mitigating crappy applications that put user settings to HKLM and Program Files (if you are not lucky enough to be using Citrix/App-V/ThinApp/&c)…but in other cases it can make for some interesting problems.

In this case we applied the NoVirtualization SHIM to Microsoft ACCESS to ensure the virtualized folders were not used.

To create the SHIM we used Microsoft Application Compatibility Toolkit (http://www.microsoft.com/download/en/details.aspx?id=7352)

We launched Compatibility Administrator (32-bit) and selected Create New Application Fix

image

image

image

image

We could then deploy the saved fix using sdbinst <NameOfFix.sdb>

Other articles on Windows virtualization of file & registry:

New UAC Technologies for Windows Vista

http://msdn.microsoft.com/en-us/library/bb756960.aspx

Tales of Application Compatibility Weirdness – Demystifying UAC Virtualization

http://blogs.msdn.com/b/patricka/archive/2009/12/14/tales-of-application-compatibility-weirdness-demystifying-uac-virtualization.aspx

Exploring User Account Control Virtualization

http://msdn.microsoft.com/en-us/gg465066

Registry Virtualization

http://msdn.microsoft.com/en-us/library/windows/desktop/aa965884(v=vs.85).aspx

About chentiangemalc

specializes in end-user computing technologies. disclaimer 1) use at your own risk. test any solution in your environment. if you do not understand the impact/consequences of what you're doing please stop, and ask advice from somebody who does. 2) views are my own at the time of posting and do not necessarily represent my current view or the view of my employer and family members/relatives. 3) over the years Microsoft/Citrix/VMWare have given me a few free shirts, pens, paper notebooks/etc. despite these gifts i will try to remain unbiased.
This entry was posted in Application Compatibility, Office and tagged . Bookmark the permalink.

One Response to Watch Out For the Virtual Store

  1. Edward Derr says:

    I learned something new here, but I find that something here is not correct with Windows 8. I am running an older program called 3ds Max 8. The vitrual store is making my application unable to correctly find custom plugins and custom config files. It looks like some dlls are not finding resources because, obviously they are not where Win8 says they are. When I try to work a fix, I found a discrepancy. There is no item for “No Virtualization” available. Windows 8 has certainly changed something since you wrote these instructions.

    Are you able to check this out with Windows 8 yourself? Are you able to tell me how to go about removing the use of the virtual store with my application on Windows 8?

    Thank you. ~Ed

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s