Testing Applications on Windows Vista

Edited By Michael Shaw

 

Guidance for Application Testers Before Testing Remember: Windows Vista is still in Beta.
Remember: Windows Vista is still in Beta. Ensure all tests pass on Windows XP

This helps to ensure only regression bugs are found This will eliminate complexity if the application has issues with non-Admin accounts

Test on XP as a non-Admin user

Bonus: Certified for Windows Vista Guidelines

Hardware Configuration

Windows Vista Minimum Requirements  “Modern” CPU (800+MHz), 512MB RAM, DX9 GPU w/128MB onboard, 40GB HD, DVD Recommended hardware for testing Windows Vista compatibility  Dual x64 CPU, 1GB RAM, WDDM GPU, 80GB HD, DVD Using high end hardware for testing will help uncover more bugs  Multi-proc specific issues  Painting issues with desktop compositing enabled  Can be used for both x86 and x64 testing  Data Execution Prevention (DEP) support

OS Configuration
 

Leave all functions enabled

Search Indexer, UAC, System Restore, Sidebar, etc. 1x Administrator, 1x Non-Admin Do not rely on built-in “Administrator”

Create multiple users
 

  

Ensure WDDM video w/Glass is being used Test both x86 and x64 - clean install Test x86 upgrade from XP to Windows Vista

Install XP -> Install App -> Upgrade to Windows Vista -> Test App

Bonus: Enable NX protection. Enable AppVerifier. Enable 120 DPI.

Test Cases

Non-Admin Install/Update
 

Should prompt for administrative credentials Shortcuts should appear for all users Content previews in explorer windows Rich preview handlers Extend the indexer to include the contents of your data files Property Handlers Per user defaults

Explorer thumbnail previews
 

Search indexing
 

Default Programs / File Extensions

Guidance for Application Testers

Test how your installation and update is done

Use MSI 3.1 for Install and Update

Alternate to MSI3.1 – call Update.exe marked as admin to do the update This is the LARGEST Application Compatibility problem with home consumer user applications Use MSI 3.1 updating procedures for this functionality

Self Updating Code – DON’T DO IT

Examples of what not to do:
 

Do not assume the user is an administrator Run Custom Actions in right context

Guidance for Application Testers (cont.)

Test where the application data is stored
The apps per user setup is performed at first run  Place per-user data into %LOCALAPPDATA%

Roaming into %APPDATA%

Place Per-Machine (Shared) data into %ALLUSERPROFILE%

Examples of what not to do:
Do not perform admin configuration at first run.  Do your admin operations during setup  Do not perform explicit Admin checks for Standard User applications


User Account Controls (UAC) Guidance for Application Testers

By default, all users are running with a standard token  Admin accounts will fail when performing privileged operations even though they worked in the past

Credential/Consent UI

This UI is not automatable from a standard user process. There must be an elevated process or service to help drive the elevation UI.

UAC Guidance for Application Testers

Process Isolation
Integrity level is assigned to each process  Lower integrity processes are blocked from writing to & reading from higher integrity processes  Lower integrity processes are blocked from sending Windows messages to higher integrity processes

See UIPI section in the app compat cookbook

UAC is the default configuration for Windows Vista (and beyond)

UAC Test Impact (cont.)

File and Registry Virtualization/Data Redirection

A list of protected system files, directories, registry locations when written to by a standard user will be virtualized to a per-user location. Each standard user will have a virtualized view of the FS and Registry Processes running elevated will not see virtualized FS & Registry Changing system setting from standard user process may succeed due to virtualization, but it doesn’t affect the system

UAC Test Guidance

Test under the default OS environment
Don’t turn UAC off  Move away from testing as the built-in administrator

Test application for UAC
Test component or application as standard user  Make sure all application functionalities are working

Pay attention to update and anything that is disabled due to admin check.

UAC Testing Support (cont.)

UAC User Level Library
 

 

Identify the level of the user token Allow easy query of well-known groups and privileges Allow easy query and set of UAC policy Allow easy test case selection & pass/failure determination Available in native and managed code

Common Issues
  

Dependencies on deprecated binaries/API’s  Kernel mode printer drivers, HLP files Assuming administrative rights Windows Resource Protection
 

Do not attempt to modify system binaries Registry protection for system keys

Rendering / Painting / DPI scaling issues
  

Black areas when not painting the entire hwnd Glass self-disable when a process attempts to paint outside it’s client area Clipped Text

Common Issues Cont.

  

Per user vs. per machine settings

Do not configure system settings on first launch

IE7+ Compatibility – Low Rights IE Doing work in DLLMain User Interface Privilege Isolation (UIPI)
Lower privilege processes cannot send messages to higher privileged processes  SendMessage will still return success

OS version checks

x64 Specific Issues
  

No 16-Bit binary support No 32-Bit kernel mode driver support 64-Bit kernel mode drives must be signed Side by side application install conflicts Hardware architecture checks

         

If I mark my app as “admin”, can I skip the elevation consent dialog? – No Can you modify the privilege of a running application? - No Will LUA elevate whenever a privileged API is used? – No, the entire process is either elevated or not How long does the elevated process last? Can it time out? – Life of the process Can I enable which users will use UAC? – Currently this is a per machine setting Does UAC apply to all processes and services? – Interactive processes only What areas of the Registry and File system get redirected? – HKLM\Software, %SystemRoot%, %ProgramFiles% Won’t Redirection de-motivate developers to fix their code? – Yes, it is a short term mitigation, not in 64bit What happens when installer detection fails? – The app runs as nonadmin Will UAC be going down-level? - No

Standard User Analyzer (SUA)

Intended to predict whether an application would work correctly as a standard user.
 

Example of Standard User Analyzer test pass:
  

Identifies API calls that would fail if attempted by a user Identifies all access requiring elevated privileges Use SUA to launch your application as elevated Test application Analyze the log for API calls that will fail for standard user


          

Windows Vista Application Compatibility Cookbook Windows Vista Compatibility Troubleshooting Guide Certified for Windows Vista Guidelines Microsoft Application Verifier Tool Understanding UAC in Windows Vista Beta 2 DevReadiness.org

Windows Vista ISV Jumpstart Toolkit

Technology Overview: Internet Explorer 7 Beta 3 Windows Vista User Experience Guidelines Windows Vista Application Compatibility Top 10 ways to light up your Windows Vista apps http://blogs.msdn.com/uac

UAC Dev and Test information will be provided on the blog frequently.

Sign up to vote on this title
UsefulNot useful