案例情况:
本地用localhost访问页面可以正常调用,但是用IP域名访问提示安装控件但是安装后在本地注册表没有注册,所以就不能调用。程序没报错,就是不能注册。我是参考MSDN上一篇文章来写注册函数的,具体可参见http://support.microsoft.com/kb/161873/zh-cn。试了很多办法都不行,求指导。
前端页面代码如下:
- HTML code
<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