Frequently asked questions on Windows Vista compatibility and Certification Logos
The following article proposes some Frequently Asked Questions and Answers about Windows Vista Compatibility and Vista Certification Logos.
I gathered information below from compatibility and logo draft documents and from internet resources that are subject to change.
Official and detailed information about Vista compatibility and Compatibility Logo Programs is available at http://www.microsoft.com/windowsvista/ and http://microsoft.mrmpslc.com/InnovateOnWindowsVista/.
You can access the latest version of this document here.
FAQ on Windows Vista Certification Logos
Question: How does "Certified for Vista" differ from "Works with Vista" logo certification?
Answer: "Certified for Vista" applications must conform to "Windows Vista Software Logo Spec 1.1" and "Certified for Program TestCases" and must be submitted for verification to get the logo. "Works with Vista" is a self-asserted certification where companies just verify compatibility and pledge to support on Vista. "Works with Vista" may be obtained with no charge, apart the cost of the Verisign Certificate needed to create an account on winqal site.
Question: Does "Certified for Vista" logo certification include requirements about accessibility, application graphic layout and rendering behavior (ex. icon sizes, toolbars etc) as it did on the Certified for windows XP logo certifications?
Question: When are Manifest and Digital signature required by Vista Logos?
Answer: Windows Vista 64-bit editions always require the "Digital Signature" for 64-Bit drivers
- "Certified for vista" software logo requires that all exe and drivers be signed with an authenticode certificate.
- "Certified for vista" software logo also requires that all exe and installers contain an embedded manifest with the declaration of appropriate UAC Execution level.
- "Works with vista" software logo doesn't require that exe and installers contain an embedded manifests or signature.
An authenticode certificate to comply this requirement may be acquired from a vendor like Verisign or it may be generated by means of a custom certificate authority (ex. The certificate authority included in Windows 2003).
Question: what happens if an application uses third party components or drivers?
Answer: if the application uses a third party component that is not signed the ISV can apply for a waiver on that particular file.
If an application cannot sign a kernel mode driver they must contact firstname.lastname@example.org and detail exactly why their driver cannot be signed.
An application can certify without printing functionality if the printing functionality is not part of its primary functionality.
Question: what happens if an application uses third party runtime that is not singed?
Answer: if the application uses a third party runtime that is not signed the ISV can apply for a waiver on that particular file.
This applies, for example, to VB6 applications as vb6 runtime files are not signed.
Question: Do Vista Logo requirements allow including "system components
merge modules" into custom application setup programs?
Answer: Yes, as long as the merge modules for the system components are those published by microsoft.
Again, these solutions to these problems can be work out on a case by case.
Question: Do Vista Logos require "Uninstall Programs" to delete application files and shortcuts from existing user profiles?
Answer: logo verification steps require that appropriate clean up is performed on setup failure.
Use of the application may create files and folders on the user profile that are not required to be removed.
Question: Do Vista Logos require "Uninstall Programs" to remove database server and data files?
Answer: Roll back requirement refers to a
failed install, not a standard install. The requirement is that if the msi installer fails to successfully install it must rollback and return the system to its previous state before the install began. For uninstallation which is not part of this test case, data can be left behind.
Question: Can VB6 and older Visual Studio applications apply for Windows Vista Logo certification?
Answer: Yes, as long as the application conform to logo requirements. Sometimes older runtime libraries violate security rules (es. Write access to WRP resources) or reliability rules (es. Fail APPVerifier checks). Migration to Framewark 2 is recommended but not required. In such cases, the ISV can contact email@example.com to work out solutions on a case by case basis.
Question: Do Vista Logo requirements allow using "Always Override" logic for a content file that cannot be versioned (es. a text file) installed by a setup program?
Question: How is it possible to obtain certificates for signing exes and Dlls? How much does it cost?
Answer: Certificates can be obtained from third party Certificate Authorities such as Verisign or Geotrust. soft Windows Vista Software Logo Program Participants Only can get a certificate from Verisign at a discounted rate. For additional information see Microsoft Authenticode Code Signing Digital ID
Question: How is it possible to integrate Windows Error Reporting?
Answer: This is possible submitting your application and registering on the winqual site.
This requires using a product identifier tool that maps the applications unique identifier onto the Windows Error Reporting site. Every error submitted through WER is grouped by offending application. An ISV can then log on to the WER site and look at the reports for their applications.
Question: is it possible to certify Smart document applications or Add-ins?
Answer: No, If an application must run on top of another application, similar to a plug in, the application does not qualify as a native Windows Vista application. The application must be a native standalone project to qualify for the Logo program.
Question: how much does it cost submitting an application for Vista Certification?
Answer: testing fee for one application is about 1000 USD; If there is a failure in any of the tests the application will need to be corrected and resubmitted at an extra charge, typically around 500 USD per retest. This is why it is recommended to check that the application verify all Test Cases described in "Certified for Windows Vista Test Cases". Pretesting is available (but not required) at an extra cost through both VeriTest (Certified for Windows Vista) and Wipro (http://www.wipro.com/microsoft/certification/).
FAQ on Windows Vista Compatibility
Question: What areas may cause incompatibility for applications on Vista?
Answer: Most aspects are documented in "The Windows Vista Developer Story Application Compatibility Cookbook".
Important aspects include:
- User Account Control
- Windows Resource Protection
- Internet Explorer Protected Mode
- Session 0 Isolation
- Deprecated components
- Changes in the standard file system standard folders and applications location.
Question: Is there a list of the APIs that require Admin Privilege available?
Answer: No, an API may require Admin Privilege depending on the ACLs on objects it manages.
Question: Can .Net Applications address more than 2GB memory on Windows Vista 64bit?
Answer: .Net Applications can address 16TB memory on 64Bit platfrom (instead of 4GB).
However, there is a 2GB limit on the size of every single object you create.
Question: How is it possible to elevate an application to use Admin Privilege?
Answer: Elevation can be:
forced by the developer adding a manifest to the application.
forced by the user with "run as administrator" command.
forced by the developer for a component using the "Elevation moniker".
Question: how is it possible to understand if a user is currently running with the filtered access token?
Answer: Use OpenProcessToken(GetCurrentProcess()…) and GetTokenInformation( … TokenElevationType… ); and check TokenElevationType:
- TokenElevationTypeDefault: The process user is not using a filtered token (i.e. it is a standard user, or UAC disabled for the user).
- TokenElevationTypeFull: The process has a split token and is running elevated.
- TokenElevationTypeLimited: The process has a split token and is running as standard-user.
Question: how is it possible to read all of the access tokens associated to a user (i.e. the filtered access token and the real user token)
Answer: use OpenProcessToken(GetCurrentProcess()…) and GetTokenInformation. To detect if the user has two tokens.
If you have 2 tokens and you are running with the filtered token, use the ShellExecuteEx() or the elevation moniker to run a process with the unfiltered token.
If you have 2 tokens and you are running with the unfiltered token, use the ShellExecuteEx() to run a process with the filtered token.
Question: What is Session 0 Isolation and how may it cause incompatibility to Windows applications and services?
Answer: In Vista, Services are run on an isolated and non-interactive session (Session 0).
In Vista, a new session is created for every user logging on.
So services never run on the same session of user applications
This is different from earlier OSs where the first logged on user is run within Session 0.
Question: How is it possible to understand if an "Access Denied" error message comes from WRP or from another source?
Answer: You can attach Appverifier to the application and run a Luapriv check. Look at the logs generated and you are looking for any message with a severity = "error" and that is accessing a WRP resource
Question: Is the EXE manifest file used to specify UAC Execution Level the same manifest file used for COM side by side execution?
Answer: Yes, the manifest file can be embedded as an exe resource and it can also be used as an external file; having a manifest as an external file may not work for all scenarios.
Question: Is Restart Manager a Windows Vista only technology? Can setup programs using Restart Manager be used on Windows XP also?
Answer: Restart Manager is available for Microsoft Windows Server "Longhorn" and Windows Vista only. To use restart manager all you need is the MsiRMFilesInUse dialog. The presence of the dialog is simply ignored on down-level systems and the default "files in use behavior" is used.
Question: Is Windows Installer 4 Technology only available on Windows Vista? Does using installer 4 technology require that separate installs be created for windows XP?
Answer: Windows Installer 4.0 is available only on "Microsoft Windows Server Longhorn" and "Microsoft Windows Vista" but it doesn't change the msi database format. Using Windows Vista Only technologies such as the restart manager just lights up on Vista and doesn't require building a separate installation for down-level platforms (ex. Windows XP).
Question: How does Vista identify an Executable or application as a setup program?
Answer: Before a 32 bit process is created, the following attributes are checked to determine whether it is an installer:
- Filename includes keywords like "install," "setup," "update," etc.
- Keywords in the following Versioning Resource fields: Vendor, Company Name, Product Name, File Description, Original Filename, Internal Name, and Export Name.
- Keywords in the side-by-side manifest embedded in the executable.
- Keywords in specific StringTable entries linked in the executable.
- Key attributes in the RC data linked in the executable.
- Targeted sequences of bytes within the executable.
- Due to the intricate nature of install detection heuristics, the recommendation is to embed an application manifest in all executables with an appropriate requestedExecutionLevel to declare the desired runtime access. It is not recommend to try to avoid heuristics, as there might be some other matching characteristic of the binary that cannot be easily modified.
See Windows Vista Application Development Requirements for User Account Control Compatibility for additional information.
Question: Is Visual Studio 2003 supported on Vista?
Answer: Changes in Windows vista impact Visual Studio so that Microsoft is unable to provide support for Visual Studio .NET 2002 or Visual Studio .NET 2003 on Windows Vista. see Visual Studio on Windows Vista for additional information.
Question: Are Framework 1.0 and Framework 1.1 supported on Vista?
Answer: Framework 1.1 is a 32bit only technology and it is supported on windows Vista.
Framework 1.0 is not supported on windows Vista and Framework 1.0 assemblies may be run with Framework 1.1 runtime.
Question: How is it possible to integrate custom application data into Windows Vista Search?
Answer: Create an iFilter provider. How to Write a Filter for Use by SharePoint Portal Server 2003 and Other Microsoft Search-Based Products.
Question: How exactly is it possible to apply an application compatibility fix to an EXE and deploy it to corporate computers?
Answer: Generate a new SDB using ACT 5.0 "Compatibility Administrator" then invoke sdbinst.exe to install the custom sdb to machines system32 folder.
Question: how is it possible to embed a certificate into MsiPatchCertificate table.
Question: how is it possible to embed a certificate into an executable.