64位XP注册表

Windows xp 64bit sp2

今天,纠结于一个问题,在登陆我们公司做的系统时候,需要检查插件是否存在。

首先让我们来看看这一段的脚本。

function isExistOffice(){
	try{
		var shell = new ActiveXObject("WScript.Shell"); 
		var key = shell.RegRead("HKEY_LOCAL_MACHINE\\SOFTWARE\\Classes\\Installer\\Products\\94C761FF8C9CE034ABDEC7BD7E97F367\\ProductName");

		var key = shell.RegRead("HKEY_LOCAL_MACHINE");
		alert(key);
		if(key.indexOf('<%=CTBRIConfig.ATTACH_NAME%>')!=-1){
			return true;
		}
	}catch(e){
		return false;
		
	}
	return false;
}

 这段脚本就是检查控制是否存在,通过调用ActiveXObject来读取注册表。

安装程序安装没有任何问题,在注册表中也可以看到此键值是存在的,进入的时候,总是返回为false,通过反复调试,确认是shell.RegRead,没有读取到注册表中的键值,报错的信息是“invalid root in registry key...”,regedit进入到注册表中,发现键值存在。

突然想到,此activexobject可能读取的不是64位的,通过regedit32进入,查看,果然没有此键值,加入,再测试OK。

 

总结:在windows 64位系统中,往往是存在着32位与64位,如果确认64位没有问题,可能程序读取的是32位的环境的,请检查32位的。

BTW:在linux中也可能会有这个情况,lib、lib64,一个是32位的,一个是64位,pidgin 中的飞信加入,也要注意这个问题。

你可能感兴趣的:(linux,windows,XP,脚本)