昨天碰到一个用户,不管是如何修改本地的file security,使用XenApp发布的应用程序都无法访问本地磁盘,报错提示:内存位置访问无效或者内存位置访问不可用或者位置不可用。

用户环境:服务器是在国内,中文版的2008 32bit,XenApp5.0。国内的用户操作系统基本都是中文版,加拿大和捷克基本都是本地语言+中文包的方式。

而且他的现状还比较奇怪,国内的用户全部可以,国外的用户10个人,只有一个不能保存,其他用户保存。这种情况,首先排除了服务器策略的配置问题,最开始怀疑的是否该用户的机器设置问题。

经过一番重装Xenapp Plugin,重装plugin的同时,清理注册表残留项(怀疑可能包含文件安全的一些配置),清理webica.ini,升级插件到最新版的XenApp Plugin 12.1,结果没有一点变化,而且这台电脑上有很多配置和资料,所以重装只能是最后考虑的一步。

后来发现,这个提示是中文的,可能和windows系统有关,于是又去查找,突然发现,xenapp 5.0 for 2008的hotfix rollup pack 1中有一个修复是针对该错误的。HRP1修复了在本地客户端访问通过ICA映射的磁盘导致的内存访问错误的问题:

When accessing a mapped client drive from a published application, an "Invalid Access to memory allocation" error message appears if server and client are using different code pages.

由于XenApp服务器和本地计算机的操作系统代码页的不同,导致了该问题。

其实事后发现,我们在远程调试的过程中,该使用者的操作系统再显示中文的时候有乱码现象,应该是中文包未安装正确,导致了,系统无法处理正确的中文编码,所以,国外的用户中,其他人可以,而该使用者却不行。所以解决办法有两种:一种就是修复系统的中文语言包,二就是修复给xenapp5打HRP1即可。

顺便说下:xenapp5 for 2008 32bit打HRP1还是比较费力的。

需要升级windows installer版本到4.5.需要打两个补丁:KB942288和KB967756,打完补丁以后,Citrix License服务业需要升级到最新的11.6版本,才可以安装HRP1,而且安装KB和安装HRP1以后都需要重启操作系统。