У нас есть java-приложение, опубликованное через citrix. Когда приложение запускается для нового пользователя, оно сразу вылетает при запуске.
Если мы войдем в систему с использованием 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
Проблема была связана с конкретным кодом, который считывал настройки 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;
}
Этот параметр реестра не всегда доступен, что приводит к сбою.
Однако переменная env% APPDATA% есть, поэтому мы создали приложение для входа в систему, которое устанавливает реестр, если он недоступен.
Спасибо господину Занченко за то, что нашел причину и разрешил ее!
Похоже, это ошибка. Для получения дополнительных сведений перейдите по следующим URL-адресам.