I am a computer programmer currently looking into UAC issues on the latest version of the Vista x64 Business Edition operating system. I have read everything that I could find on the Microsoft web site regarding Vista UAC and I am having difficulty getting an installation application updated to be ‘LUA compliant’. The program that I’m working on installs x64 kernel mode drivers.
Let me describe exactly what’s happening.
First or all, I went to the web site:
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnlong/html/AccProtVista.asp
Next, I followed the instructions to update my program to ‘prompt before launch’ (see the section titled ‘Administrator-only Application’). I did this by taking the example manifest code from the site, creating a UTF-8 manifest file for my Visual Studio 2005 C++ project, updating my resource file to embed the manifest into my project, building the application, and then signing it with a certificate that was obtained from Verisign.
The requestedExecutionLevel that I included in the manifest was requireAdministrator (just like in the example).
The application, which installs x64 kernel mode drivers, works just fine on Vista x64 when I execute it by unchecking the global UAC checkbox (disabling the UAC feature) - or by leaving the UAC enabled and either executing the program by selecting ‘Run as Administrator’ or by changing the application’s Properties Compatibility Privilege Level to ‘Run this program as an administrator’.
BUT when I simply run the application, either by double-clicking on it or by selecting ‘Open’, it does NOT prompt me up front as documented on the web site. Instead, it simply runs the application - and when it attempts to perform the installation, it gives me a ‘you do not have permission’ error (regardless of whether I’m an adminstrator or a standard user).
I understand that Vista is splitting the access token into two and executing the program with a standard user’s privileges - but isn’t the embedded manifest supposed to prompt for permission to proceed with full administrator privileges with UAC enabled? That was what I expected. OR is it necessary to run the program using one of the methods I mentioned above with UAC enabled (i.e. ‘Run as Administrator’ or changing the Properties Compatibility Privilege Level)? If so, will these methods continue to be supported in subsequent releases of Vista x64? If this is the case, then I suppose this might simply be a matter of documenting the necessary steps in order for our clients to install our kernel mode drivers on Vista x64.
Thanks, Don.