A Look Under the Covers - The LOCAL_INTERACTION_ALLOWED Tag

Introduction

Application virtualization is a key feature of the SoftGrid platform.  It provides administrators with a way to prevent applications from interfering with or modifying the local environment.  It can also prevent two virtual applications from conflicting with each other by confining many of their activities and interactions to a virtual environment.

However, virtualization can also prevent locally installed applications from interacting with a virtualized application.  It is also possible for local applications such as Outlook to end up running inside virtual environments, preventing other local applications from interacting with them.

In addition, some SoftGrid deployment scenarios include situations where some applications are installed locally and others are virtualized.  It may, for example, be desirable to allow virtual applications to send mail through a locally installed version of Outlook, or use a local copy of Windows Live Messenger.  Much of this communication takes two forms: through named objects (mutexes, shared memory, etc.) and through COM objects.

When local interaction is disabled (the default), objects in the virtual environment are isolated such that their names and GUIDs do not conflict with those used on the local system or in other virtual environments.  When local interaction is enabled via an OSD policy, named objects and COM objects are created in the global namespace rather than isolated inside a particular virtual environment.  In addition, virtualized COM requests are first forwarded to the local system to allow it to launch and manage them.  If the request fails,  such as if the object does not exist in the local configuration, the COM object is launched from resources (registry, files, etc) in the virtual environment.  Once launched, the COM object can be seen outside the virtual environment but the virtualized resources (registry, file, etc) are not visible.

Configuration

Local interaction is a policy that is set in the OSD for an application.

<SOFTPKG>
    <IMPLEMENTATION>
        <VIRTUALENV>
            <POLICIES>
                <LOCAL_INTERACTION_ALLOWED>TRUE</LOCAL_INTERACTION_ALLOWED>
            </POLICIES>
        </VIRTUALENV>
    </IMPLEMENTATION>
</SOFTPKG>

Although the setting is specified in the OSD it really applies to the package and therefore all applications that use the same package.  For example, if you set LOCAL_INTERACTION_ALLOWED to TRUE in “Microsoft Word” but not in “Microsoft Excel”, the behavior of the system will change depending on what application you launch first.  The behavior is setup when the virtual environment is first created and is not modified as additional applications in the package are launched.

Troubleshooting

Because enabling LOCAL_INTERACTION_ALLOWED can introduce application conflicts it is best that you only implement this if absolutely necessary, and be sure to test in your environment before rolling out a package that uses this tag enterprise wide.  This tag can be useful if you're troubleshooting interoperability issues with your virtualized app, such as Outlook forms that don't work as expected or even when virtualizing Microsoft Office 2007, but you must still be careful not to implement it unless all other possible solutions are investigated. 

Chris Lord
Sr. Program Manager
Microsoft Corp.