Java应用程序在Citrix会话启动时崩溃

我们有一个通过citrix发布的Java应用程序。 当为新用户启动应用程序时,启动时会立即崩溃。

如果我们使用RDPlogin,然后注销(不启动应用程序),它开始工作。

我们已经发布了另一个较小的Java应用程序,它适用于新用户,而无需先使用RDPlogin。

脚步:

- Publish java app - create new user - run published app in citrix -> crash - log on user using rdp, log out - run published app in citrix -> works fine 

将每个新用户login到每台Citrix服务器成为一个真正的难题:-P

问题与特定的代码有关,从registry读取AppData设置。

这是来自netbeans启动器(可能会在更高版本中更改)

 char* getUserHomeFromRegistry(char* userhome) { HKEY key; if (RegOpenKeyEx( HKEY_CURRENT_USER, "Software\\Microsoft\\Windows\\CurrentVersion\\Explorer\\Shell Folders", 0, KEY_READ, &key) != 0) return NULL; char *path = GetStringValue(key, "AppData"); RegCloseKey(key); strcpy(userhome, path); return userhome; } 

此registry设置不总是可用的,然后导致崩溃。

但是,%APPDATA%envvariables是,所以我们做login应用程序设置registry,如果它不可用。

感谢Zanchenko先生find原因并解决它!