Home > Blogs > VMware ThinApp Blog


Using IE 7 on Vista as a Virtual Entry Point

It’s not uncommon to use a local copy of Internet Explorer (IE) as a way to present virtual applications to the desktop. The most common example is a virtual package of Java that is then launched with the local Internet Explorer. As such, this normally works without any modification. However, in a Vista environment, you can run into a unique circumstance.

Internet Explorer 7 starts a process called ieuser.exe. This process
is launched before starting Internet Explorer and sets the security
settings for the user to the registry. The issue with ieuser.exe is
that it is left running even though you have closed the browser. When
you try to run an IE entry point from ThinApp, or try to launch the
local browser after using an IE entry point, you will see issues with
the browser when trying to start it. This is because it’s trying to
access the running process of ieuser.exe that it sees running. The way
to work around this is to include a script that closes any copy of
ieuser.exe that may be resident on the host and to close the virtual
copy when you are finished with your virtual application. Below is a
copy of a script that can be used to accomplish this.

Function OnFirstSandboxOwner

    Dim objWMIService, objProcess, colProcess

    Dim strComputer, strProcessKill

    strComputer = "."

    strProcessKill = "’ieuser.exe’"

    Set objWMIService = GetObject("winmgmts:" & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")

    Set colProcess = objWMIService.ExecQuery ("Select * from Win32_Process Where Name = " & strProcessKill )

    For Each objProcess in colProcess

        objProcess.Terminate()

    Next

End Function

Function OnFirstParentExit

    Dim objWMIService, objProcess, colProcess

    Dim strComputer, strProcessKill

    strComputer = "."

    strProcessKill = "’ieuser.exe’"

    Set objWMIService = GetObject("winmgmts:" & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")

    Set colProcess = objWMIService.ExecQuery ("Select * from Win32_Process Where Name = " & strProcessKill )

    For Each objProcess in colProcess

        objProcess.Terminate()

    Next

End Function