Citrix Workstation AgentService 无法应用计算机策略

今天处理了一个XA/XD 7.12 Server VDA未注册的问题,我们尝试重启Citrix Desktop Service之后发现下面的两个警告和错误:

Citrix Workstation Agent Service无法应用计算机策略。
错误详细信息:
Call to CitrixProcessGroupPolicy failed, errorcode=126

同时我们发现Citrix Group Policy Engine也在同样时间报错:

处理组策略失败,原因为:0x8007007E

从以上我们判断未注册是由于CitrixCseEngine失败导致,而0x8007007E的错误描述为:The specified module could not be found

首先建议检查Citrix Group Policy Engine相关的Filter Provider是否有残留以及文件不存在问题。

  1. 检查下FilterProviders每个模块DllName对应的文件是否正确,以及文件是否存在
  2. 如果是从XA6.5升级到XA/XD 7.X版本的话,检查是否有多余的ImaClientEvidence.dll模块存在。如果存在的话,删除该KEY以及DllName对应路径下的DLL文件

这次在检查的时候发现,以上两个全部正常,但是问题依旧,于是我们尝试抓取了Process Monitor日志。
[alert type=”info”]

  1. 在抓取的过程中,由于只涉及到Citrix Group Policy Engine,所以我们可以用CitrixCseEngine.exe作为Filter来缩小日志量以及问题范围
  2. 同时,由于错误为无法加载对应的模块,所以我们主要可以关注文件的访问,文件是否存在以及权限等

[/alert]
最终,我们在抓取到的Process Monitor中发现其他DLL都可以正常加载,但是CitrixCseEngine一直在尝试从不同的路径下加载MSVCR120.dll,但是结果都是NAME NOT FOUND。


而MSVCR120.dll对应的是Microsoft Visual C++ 2013 Redistributable,在我们通过控制面板检查发现VC++ 2013 runtime只有X86版本,在同正常服务器进行比对后我们发现还缺少对应的X64版本,在安装了Microsoft Visual C++ 2013 Redistributable (x64)之后,重启Citrix Desktop Service后VDA顺利注册到了Controller。

[alert type=”success”]

  1. Microsoft Visual C++ 2013 Redistributable可以从微软官方网站下载: https://www.microsoft.com/en-us/download/details.aspx?id=40784
  2. 也可以从XA/XD ISO中\Support\VcRedist_2013_RTM\目录中找到

[/alert]