Java Web Start behaves differently on Windows Terminal Server as compared to regular Windows environment with respect to system level "deployment.config" file. On regular Windows environment, "deployment.config" file is found in "<Windows Directory>\Sun\Java\Deployment\deployment.config". On Windows Terminal Server however, "deployment.config" file is found in "\Dokumente und Einstellungen\<User-ID>\Windows\Sun\Java\Deployment". So, "javaws.exe" is not "Terminal-Services-aware". Please find below some more details concerning the problem. 1. Sun docs ----------- According to Sun's Java Web Start documentation, the optional file "deployment.config" is expected to be found in two distinct locations on Windows operating systems: See http://java.sun.com/j2se/1.5.0/docs/guide/deployment/deployment-guide/properties.html or See http://java.sun.com/javase/6/docs/technotes/guides/deployment/deployment-guide/properties.html ---------------------------------------------------- System Level ------------ [ ... ] If deployment.config exists, it is located either here Operating System Location Windows <Windows Directory>\Sun\Java\Deployment\deployment.config or here Operating System Location Windows ${deployment.java.home}\lib\deployment.config (${deployment.java.home} is the location of the jre from which the deployment products are run. Deployment products include Java Web Start, Java Plug-in, Java Control Panel ...) ---------------------------------------------------- 2. Windows API: GetWindowsDirectory() ------------------------------------- According to Microsoft's documentation, the function GetWindowsDirectory() results in different return values, depending on whether the function is called under a regular Windows environment or under a Windows Terminal Server environment. Please see MSDN article http://msdn.microsoft.com/en-us/library/ms724454(VS.85).aspx ------------------------------------------------------------ Remarks [ ... ] Terminal Services: If the application is running in a Terminal Services environment, each user has a private Windows directory. There is also a shared Windows directory for the system. If the application is Terminal-Services-aware (has the IMAGE_DLLCHARACTERISTICS_TERMINAL_SERVER_AWARE flag set in the image header), this function returns the path of the system Windows directory, just as the GetSystemWindowsDirectory function does. Otherwise, it retrieves the path of the private Windows directory for the user. ------------------------------------------------------------ Please find attached demo program "getsystemhome.exe", which is not "Terminal-Services-aware" ("getsystemhome.c" is attached as well): 2.1 Windows XP SP2 ------------------ C:\> getsystemhome.exe kernel32.dll found GetSystemWindowsDirectory API call is available, running Windows 2000 or higher GetWindowsDirectory C:\WINDOWS GetSystemWindowsDirectory C:\WINDOWS running in a pure Windows System environment C:\> 2.2 Windows Terminal Server --------------------------- On Microsoft Windows Server 2003 R2 SP2 running as "Administrator" we get: C:\> getsystemhome.exe kernel32.dll found GetSystemWindowsDirectory API call is available, running Windows 2000 or higher GetWindowsDirectory C:\Documents and Settings\Administrator\WINDOWS GetSystemWindowsDirectory C:\WINDOWS running in a Terminal Server environment C:\> 3. Java Web Start ----------------- So, on a Windows Terminal server Java Web Start "javaws.exe" does not find file "deployment.config", when it is placed as suggested by the docs in directory "<Windows Directory>\Sun\Java\Deployment\deployment.config". This is what the problem is about.
|