I virtualized one a few months ago. First, I ran into a long path issue on Windows XP after packaging, I was able to make it work by moving the content in %APPDATA% to the root of the C drive (%drive_C%) and by tweaking the entry point in the package.ini (WorkingDirectory, Source). Even though the application is installed per user, the application was working fine outside of its original emplacement.
You have floating desktops but did you configured roaming profiles so that the sandbox follow the users? Or maybe you can configured the sandbox to be on the network.
If the issue still persists with the sandbox following the user, maybe the application has some mecanism based on the computer name. As a test, you can try virtualizing a computer name so that any user executing the package will run the app with the same configured computer name.
VirtualComputerName Parameter
The VirtualComputerName parameter determines whether to rename the computer name, to avoid naming
conflicts between the capture process and the deployment process.
Applications can use the name of the computer on which they are installed, or connect to a database and use
the name of the computer in the connection string. Because the capture process is different from the deployment
process, captured applications that require a computer name must add the computer name to the virtual
package to ensure that the application can run on any machine.
ThinApp comments out the initial setting of the VirtualComputerName parameter. This parameter uses a string
that the GetComputerName and GetComputerNameEx API functions return in a virtual application.
Example: Including a Virtual Computer Name
This example shows how the VirtualComputerName parameter creates a second name for a computer named
LOCALHOST, which will be captured in the virtual application. The application uses the second name to
connect to a virtual machine. If the capture system lacks the LOCALHOST name, ThinApp comments out the
VirtualComputerName parameter.
;VirtualComputerName=<original_machine_name>
If you rename a clean machine as LOCALHOST before performing the capture process, the Package.ini file
activates the name that the VirtualComputerName parameter created. The virtual application works with the
renamed LOCALHOST name because any computer that the application runs on receives this value as the
computer name.