我们有一个通过 citrix 发布的 Java 应用程序。当为新用户启动应用程序时,它在启动时立即崩溃。
如果我们使用 RDP 登录,然后注销(不启动应用程序),它就开始工作了。
我们发布了另一个较小的 java 应用程序,它适用于新用户,无需先使用 RDP 登录。
脚步:
- 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
让每个新用户登录到每个 citrix 服务器真的变得很累 :-P
答案1
答案2
该问题与从注册表读取 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;
}
此注册表设置并不总是可用,从而导致崩溃。
但是,%APPDATA% 环境变量是,因此,如果它不可用,我们就制作一个设置注册表的登录应用程序。
感谢 Zanchenko 先生找到原因并解决它!