行云无鸣

2012-01-01

PATH路径输出变为”C:\Windows\system32\NV;.;”

Filed under: 乱语 — 标签:, , , , — hellyguo @ 21:32

我的计算机是Lenovo的T420,有两块显卡:Intel HD和NV 4200。刚装好系统时,由于我顺手禁用了NV的几个服务。所以,一直采用的显卡是Intel HD。
前几天,我打算玩游戏,打开了NV的服务后,噩梦开始了。CMD下的PATH输出正常,但在其他程序中,PATH输出就不正常,输出”PATH=C:\Windows\system32\NV;.;”。
让我们来看下这个文件夹下有什么:

2011.12.30 09:35 .
2011.12.30 09:35 ..
2011.04.01 22:00 15,039,080 ig4icd32.dll
2011.04.01 22:00 644,712 igd10umd32.dll
2011.04.01 22:00 644,712 igdumdx32.dll

ig4icd32.dll/igd10umd32.dll/igdumdx32.dll这几个文件,在Intel HD的驱动中也存在。猜想是,NV为实现双显卡切换,重写了与Intel HD驱动同名的DLL,来调用NV自身的DLL。
为此目的,NV必须将这些DLL库放在Intel HD的DLL库前优先加载。最简单的方法是将这些DLL放在PATH查询路径的最前面,即将”C:\Windows\system32\NV”放在PATH变量的最前面。
而实现此功能的程序,存在BUG,没有实现将”C:\Windows\system32\NV”放于PATH变量最前面,而是实现了将此路径叠加当前路径,覆盖PATH。也就是”PATH=C:\Windows\system32\NV;.;”。
于是,我再次禁用了NV的服务。重启后,PATH就正常了。

%d 博主赞过: