部分虚拟机注册表被清空导致虚拟机无法登录

发布时间:  2015-03-10 浏览次数:  586 下载次数:  0
问题描述
 虚拟机重启之后在FusionAccess Portal中为“就绪”状态,但通过WI登录虚拟机上报“与XXXXX之间的连接失败,状态(1110)”,因此初步判断虚拟机自身问题导致无法登录。
处理过程
1. 登录问题虚拟机,发现客户虚拟机安装了大量的百度相关的软件(包括:百度安全卫士、百度杀毒、百度浏览器、百度输入法、百度音乐等软件),其中客户之前应该对百度杀毒、百度安全卫士做了卸载操作,但是进程和服务均有残留。

2. 通过一线工程师向客户申请,将所有的百度相关的软件予以卸载。手动删除百度杀毒服务,同时删除百度相关的驱动,重启虚拟机之后虚拟机问题依旧。参考案例:http://support.huawei.com/ecommunity/bbs/10185843.html?p=1#p0

3. 使用“LogEnabler”工具,打开VDA日志功能,登录时打印如下异常日志:
11/13 14:53:31:059   Trace5: Citrix.Portica.BizLogic.ConsoleLoggedOut_OnIcaConnect Session Checkpoint: Failed to Lock the workstation.
11/13 14:53:31:059    Trace: Fsm:VistaMainFsm(1):Event trig  curr:    ConLoggedOut,        evt :     ICA Connect,   Transition failure.
11/13 14:53:31:059    Trace: Fsm:VistaMainFsm(1):Transition  curr:    ConLoggedOut,  next:    ConLoggedOut
11/13 14:53:31:059   Trace1: Citrix.Portica.SessionManager.SessionIcaConnect Session creation failed

4. 根据日志打印,在网上查到如下案例:http://support.citrix.com/article/CTX133773,此案例中描述需要在“HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Windows\AppInit_DLLs”注册表项中,必须包含有“mfaphook64.dll”。对比正常虚拟机,异常虚拟机中此项缺失。如下图:

mfaphook.dll的相关解释以及AppInit_DLLs的作用详见如下链接:
http://support.citrix.com/article/CTX125406
http://support.citrix.com/article/CTX107824
http://support.microsoft.com/default.aspx?scid=kb;en-us;197571

5. 将正常虚拟机的“HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Windows\AppInit_DLLs”注册表项拷贝到异常虚拟机中,重启异常虚拟机。重新登录虚拟机,可以正常登录,问题解决。正常如下图:

6. 至于“HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Windows\AppInit_DLLs”注册表被修改的原因,初步判断是由于安装某些软件导致该问题,正如微软官网所说“Typically, only the Administrators group and the LocalSystem account have write access to the key that contains the AppInit_DLLs value. ”只要具有Administrators权限的用户就可以修改该注册表项,我们虚拟机都是以Administrators权限进行分配的,具体软件确认起来比较复杂。
解决方案
将正常虚拟机的“HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Windows\AppInit_DLLs”注册表项拷贝到异常虚拟机中,重启异常虚拟机。重新登录虚拟机后问题解决。

END