Our perspectives items are aimed at technical professionals as well as their managers and team leads. They are intended to communicate the foundational nature of the knowledge and skills we teach. Making Windows internals a team competency will pay many dividends for all your current and future projects.

What is Post-Compile?Many learning aids for application debugging, troubleshooting and diagnostics assume that you are the one who designed the software you are analyzing. Typically they further assume that you have the ability to make fundamental changes to that software and recompile it. Intimate understanding of core Windows OS API calls may also be assumed. This is why many learning resources quickly plunge into operating system source code samples, compiler settings or windbg commands. A Post-Compile perspective turns these assumptions on their head: the learner did not design the software, cannot recompile the code and does not necessarily have an intimate understanding of the Windows Operating System APIs.

How Does It Help?By focusing on tools, skills and methods that are exclusively post-compile, our training can help all of the professionals involve in building and supporting your systems and technology.

Complex, Layered and Changing Windows applications depend on a complex, layered set of APIs that make up the OS and other software components. Windows subsystems such as COM, DCOM, .NET and Security all play fundamental roles in whether an application can run as intented. The ability to trace the essential interactions of applications with these services is fundamental to keeping applications running when the run environment changes as in OS Upgrades or Virtualization.

Built-in API HookingSince Windows 2000 hooking APIs have been integrated right into the operating system. This has led to a new generation of powerful diagnostic tools. Sysinternals Process Monitor (procmon.exe) is an excellent example of this functionality and there are many more lesser known tools. These tools enable application problems to be diagnosed that previously would have required a full scale Windows debugging setup.

Mitigation TechnologiesMicrosoft and other vendors have created many technologies and tools for mitigating application problems without re-writing applications. These range from the under-utilized Application Compatibility Toolkit (AppCompat) to full scale application virtualization (AppVirt). Some companies avoid these technologies simply because they do not have an understanding of how they work. This can prevent the leveraging of low cost options such as the Microsoft Application Compatibility Toolkit.

Outsourcing Application CompatibilityOutsourcing application compatibility to a service company is an option that many large companies consider due to the skills and challenges required to test, qualify and resolve problems with applications. Framework tools that claim the possibility of making most applications compatible with minimal effort hold a similar appeal.

Proofing The OptionsEven if outsourcing or framework tools prove to be a good solution for your company, you can still benefit from having the internal capability to compare service providers or framework tools. Ultimately this process will boil down the the technical approach taken by the service company or framework tool and if you have someone on staff who is equipped to make those assessments, you will be in a better position to compare solutions.

Screening Outbound ApplicationsWhen using outsourcing and framework tools there is frequently a cost per application for resolving problems. If your team is equiped to analyze application compatibility problems, you stand to save a lot of money on simple fixes that you can do in-house.

Qualifying & Troubleshooting Fixed ApplicationsIf you are dealing with a large application portfolio, even the best efforts by service providers and framework tools will yield some results that don't work as advertised. With the rights skills and tools you can qualify applications that have been fixed and you can provide helpful troubleshooting knowledge if you need to run an application through again.

Internally Written ApplicationsInternal applications that have been written within a non-software company may still require special testing and troubleshooting - especially if your service provider or framework tool depends on a general knowledge base of applications that are commercially available.

Long Term OutlookWhether using a service provider or a framework tool, you will need to be able to maintain and upgrade applications after the big project budgets are gone. Getting started on these skills means that you'll be in a better position to take over after the initial push is complete.

Some organizations are using the upgrade to Windows 7 as a time to reevaluate whether they can finally take admin rights away from users. Under Windows XP this was mainly a question of file and registry permissions. For applications where this is the simple case, Windows 7 does intelligent, on the fly virtualization (UAC Virtualiation). Depending on the application, however, there are other areas of application interoperability where Windows 7 has tightened up on what can and cannot be done even with admin rights. Knowing how to analyze the underlying API calls allows non permissions problems to be isolated and mitigated. Application Compatibility Toolkit includes mitigation shims for many of these APIs. It also includes redirection (file / registry virtualization) for areas not covered by Windows 7's built-in UAC Virtualization.

Unnecessary COTS Upgrade CostsMost times vendors roll Windows 7 support into an upgraded version - they are understandably reluctant not to invest in an old code base. If the release is a major one, there may be upgrade costs and expensive user re-training costs as well. Understanding the free tools available in this space may allow you to make your current versions run properly. Across all of your applications this can result in a snowball effect for Desktop project budgets.

Qualifying & Troubleshooting Fixed ApplicationsIf you are dealing with a large application portfolio, even the best efforts by service providers and framework tools will yield some results that don't work as advertised. With the rights skills and tools you can qualify applications that have been fixed and you can provide helpful troubleshooting knowledge if you need to run an application through again.

Internally Written ApplicationsApplications that have been written by your company may still require special testing and troubleshooting - especially if your service provider or framework tool depends on a general knowledge base of applications that are commercially available.

Windows Integrated Application Compatibility LayerApplication Compatibility puts some hardcore power in the hands of IT Pros - it is rich in mitigation functionality and it is integrated deep into the operating system. With broad ranging interception capabilities it is not only used to make applications work on Windows, the same infrastructure is used to provide the isolation features of Internet Explorer and core OS UAC Virtualization. Many of your existing software applications are already using the same techniques when running on a vanilla Windows 7 installation.

Application VirtualizationHere are some considerations for how the skills taught at CSI Windows apply even when you are planning on doing Application Virtualization:

How a given application wishes to deal with the OS remains the same, regardless of your target mitigation technologies. Solid skills in analyzing how applications interface with the OS are very helpful when virtualizing applications - regardless of the chosen virtualization technology.

Understanding an appliation's interfacing to the OS helps you select appropriate application virtualization technology for the application.

Since there are still hard and soft costs to virtualizing applications - it can save time and money to reserve application virtualization for exceptional cases.

Application virtualization is not a panacea - it serves mainly to isolate application conflicts and reduce the need for admins rights - it does not eliminate core API compatibility concerns. Technologies such as Windows 7's Windows Integrity Mechanism (WIM), User Interface Privilege Isolation (UIPI), hard coded system paths and others can still affect applications that are vitualized. Since App-Compat does not remove the application from the native environment, it's mitigation shims can create compatibility for many of these applications.

App-Compat can work WITH Application Virtualization when Application VIrtualization by itself cannot make the application work.

Application Packaging Lives!It would be nice if everything could be consolidated into one silver bullet approach - but that's hardly ever the case. Application packaging skills will still be needed for customizing Windows Installer packages and for packaging software that cannot play nice with application virtualization.

Vendor and Technology NeutralThere are many product choices for helping with application compatibility. No matter what technologies or tool sets you use, a good base of skills in diagnosing application compatibility issues will always be helpful. If your chosen solution has a rich set of analysis tools - developing skills in application compatibility engineering will prepare you to leverage them.