tags:

views:

59

answers:

1

Hello,

I have a VB6 app that I've been selling for over 12 years. Sometimes I have users that have a hard time getting the app to run. The data writes are going into /My Documents so nothing but the installation files (EXE, etc.) are going into C:\Program Files (or C:\Program Files (x86)).

The fix to their problem is to start the app, even though it appears hung, then show the task manager, view processes, right-click my app's process and uncheck UAC Virtualization. Then I have them repair the installation and all is fine.

Why is my process getting put under UAC Virtualization and how do I prevent this from occuring? I also use InstallShield 2010 Professional to create the installation, I'm not sure if it's related to the installer or the app itself.

Thank you.

+3  A: 

To prevent virtualization, add a manifest to the application. Whether you say asInvoker or requireAdministrator, you won't get virtualization any more. I am guessing asInvoker will be better for you since the app works fine without elevating.

You can just put foo.exe.manifest in the same folder as the exe, or embed it, which has some tricky stuff like making the manifest a multiple of 4 bytes long. This question covers some gory details of embedding.

Kate Gregory
Thank you for the information. Any links to how to create this manifest?
Neal
In its simplest form, it's just a file of XML named yourexename.exe.manifest and put in the same folder as yourexename.exe. For an example of the content see http://csi-windows.com/toolkit/manifest-template among others. The `requestedPrivileges` part is the important aspect.
Kate Gregory

related questions