案例情况:
本地用localhost访问页面可以正常调用,但是用IP域名访问提示安装控件但是安装后在本地注册表没有注册,所以就不能调用。程序没报错,就是不能注册。我是参考MSDN上一篇文章来写注册函数的,具体可参见http://support.microsoft.com/kb/161873/zh-cn。试了很多办法都不行,求指导。
前端页面代码如下:
<HTML>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<HEAD>
<TITLE>New Page</TITLE>
</HEAD>
<BODY>
<script type="text/javascript">
var checkPsw = function(){
var div = document.getElementById("password").value;
if(div.length>7){
alert("密码要不大于7位");
return;
}else{
encodePsw();
}
}
var encodePsw = function(){
if(window.ActiveXObject){
var div = document.getElementById("password").value;
alert("加密前的值为:" + div);
try{
alert("得到结果为:"+document.getElementById("ActiveXDemoSecond1").encode(div));
}catch(err){
alert("调用异常3");
document.writeln("捕捉到例外,开始执行catch块语句 --->");
document.writeln("错误名称: " + err.name+" ---> ");
document.writeln("错误信息: " + err.message+" ---> ");
}
}else{
alert("您的浏览器不支持ActiveXObject,所以调用失败啦");
}
}
</script>
<OBJECT ID="ActiveXDemoSecond1" WIDTH=100 HEIGHT=51
CLASSID="CLSID:C785A3B6-4D21-4E5D-BABB-B8F917B2B164"
CODEBASE="http://192.168.2.186:8080/ActiveXDemo/lib/axs.cab#Version=1,0,0,1">
<PARAM NAME="_Version" VALUE="65536">
<PARAM NAME="_ExtentX" VALUE="2646">
<PARAM NAME="_ExtentY" VALUE="1323">
<PARAM NAME="_StockProps" VALUE="0">
</OBJECT>
<form>
请输入密码:<input type="text" name="password" id="password"" />
<input type="submit" value="Submit" onclick="checkPsw()"/>
</form>
</BODY>
</HTML>
组件是用MFC写的
------解决方案--------------------------------------------------------
目前IE对ActiveX控件的限制已经相当严格,如果没有使用合法证书为自己的控件签名,那么无论你的控件功能多么强大,也将毫无用武之地。
VeriSign,thawte 微软代码签名证书:http://www.willrey.com