突然从某一天开始,命令行cmd就变成了这种鬼东西。

[0x7FFEF7EABC10] ANOMALY: meaningless REX prefix used

[0x7FFEF7EABC10] ANOMALY: meaningless REX prefix used

[0x7FFEF7EABC10] ANOMALY: meaningless REX prefix used

[0x7FFEF7EABC10] ANOMALY: meaningless REX prefix used

[0x7FFEF7EABC10] ANOMALY: meaningless REX prefix used

[0x7FFEF7EABC10] ANOMALY: meaningless REX prefix used

[0x7FFEF7EABC10] ANOMALY: meaningless REX prefix used

[0x7FFEF7EABC10] ANOMALY: meaningless REX prefix used

……

非常多的刷屏。

虽然看着很不爽,但是命令行还是可以执行命令的。最大的问题是像git之类的工具因为需要解析命令行的执行结果,导致不能使用。而网上有一些类似的解决方法,包括更新显卡驱动:

https://stackoverflow.com/questions/43174908/warning-invalid-credential-line-0x7ffef7eabc10-anomaly-meaningless-rex-pref

还有:

https://answers.microsoft.com/en-us/windows/forum/windows_7-performance/anomaly-meaningless-rex-prefix-used/13efd2ab-6108-4454-94e0-d231801ec7bc

https://social.technet.microsoft.com/Forums/forefront/zh-CN/54867499-4e06-4815-9f65-d1a382cbee5c/255112104621488cmd652922519134892216292019621069246352615925552?forum=win10itprogeneralCN

这些帖子对我毫无用处。


经排查发现是安装的北信源搞的鬼(网上显示还有其他软件也会导致这个问题)。但是公司的系统必须用。所以解决方式如下:

1. 通过排查发现,cmd.exe引用了如下四个dll文件,通过命令dumpbin就可以看到:

dumpbin /dependents cmd.exe


需要注意的是,网上很多文章都把参数写成了\dependents,这是错误的。正确的是/dependents。

2. 比较这四个文件的大小,ADVAPI32.DLL,USER32.DLL, SHELL32.DLL, MPR.DLL.就和那些没有问题的系统的这些文件比较

3. 通常情况下,你需要系统最高权限才能替换这些文件,但是大多数情况下未必有。所以将这些文件重命名一下,放入c:\Windows\System32目录下面。比如,将其名字后面加1

我找的机器的文件大小如下:


4. 重启系统,在f8进入带命令行的安全模式。在该模式下,使用regsvr32命令重新注册这些dll文件:

    regsvr32 ADVAPI321.DLL

    regsvr32 USER321.DLL

    regsvr32 SHELL321.DLL

    regsvr32 MPR1.DLL

然后反注册原来的dll文件

    

     regsvr32 /u ADVAPI32.DLL

    regsvr32 /u USER32.DLL

    regsvr32 /u SHELL32.DLL

    regsvr32 /u MPR.DLL

5. 重启系统。解决问题。


备注:

    1. 其实在C:\Windows\SysWOW64下也有一个cmd.exe,将系统默认cmd换成这个路径下的cmd也能解决问题。

    2. 如果知道怎么改权限,能够直接替换这些位置的文件;或者使用双系统替换文件,也可以解决这个问题。

 


Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐