各位大牛们,这个问题真心困扰我很久了。。。。
我使用第三方控件a.ocx,用C#,自己制作了一个视频控件b.dll;
现在我想在页面上嵌入这个控件,达到实时观看视频的效果;于是我把这个b.dll控件打包成b.cab文件;
但是仍然是仅在我自己的电脑上可以观看到视频,在别人的电脑上都被IE拦截,无法安装,因为证书无法通过;
试过一下几个方法,但是貌似都不行。
一、制作安全控件,但是需要付费证书,这个不太可能实现
二、在客户端注册我自己开发的控件b.dll,但是会弹出错误信息:模块b.dll已加载,但找不到入口点DllRegisterServer.
三、直接使用第三方控件a.ocx,不作任何改动,客户端依然拦截
四、依然直接使用第三方控件a.ocx;在客户端做了下判断,是否已安装了此控件;若未安装,给出链接,下载某exe文件(我就是安装了这个exe文件,电脑上才出现a.ocx文件的),并安装;
但是依然会被IE拦截。
五、直接在客户端注册控件a.ocx,并且提示注册成功,依然拦截。
六、把服务器的IP设为可信站点,依然不好用
我已经在想不出其他的办法了。
想请问各位大牛,
1. 我上面说的几个问题里面 有没有可以改进,最后达到所有客户端都可下载控件的?
2. 客户端之所以不可以使用该控件,是不是因为这个控件在他的电脑上没有注册?那是不是我手动注册后,就可以使用了?
3.我的cab是不是制作的有问题?步骤我是按照http://blog.csdn.net/qjzh/article/details/4566907中教的,一步一步来的;因为我是基于a.ocx制作的b.dll,所以在b.inf中,我是这么写的:(前两个dll我不知道又没有用到,所以把他们两个也包含进来了)
[Add.Code]
Interop.LIVEXLib.dll=Interop.LIVEXLib.dll
AxInterop.LIVEXLib.dll=AxInterop.LIVEXLib.dll
a.ocx=a.ocx
b.dll=b.dll
[Interop.LIVEXLib.dll]
file-win32-x86=thiscab
RegisterServer=yes
FileVersion=1,0,0,0
[AxInterop.LIVEXLib.dll]
file-win32-x86=thiscab
RegisterServer=no
FileVersion=1,0,0,0
[a.ocx]
file-win32-x86=thiscab
clsid={********************}
FileVersion=1,0,0,0
RegisterServer=yes
[b.dll]
file-win32-x86=thiscab
clsid={&&&&&&&&&&&&&&&&&&}
FileVersion=1,0,0,0
RegisterServer=yes
4. 使用C#和C++制作出来的控件有什么不同?C++的会更安全吗?
5. 是不是只要想让客户端可以使用控件,就必须要花钱购买证书???
这实在是一个又臭又长的问题,有劳各位大牛们费神解答了!!!跪谢!!!在线等~~~分数不多,聊表谢意!
c# 控件 web
------解决方案--------------------
一、制作安全控件,但是需要付费证书,这个不太可能实现
〉这个不太贵,看你能挣多少钱了。
二、在客户端注册我自己开发的控件b.dll,但是会弹出错误信息:模块b.dll已加载,但找不到入口点DllRegisterServer.
〉这说明你的控件开发有问题,简单说,创建工程设置有问题。
三、直接使用第三方控件a.ocx,不作任何改动,客户端依然拦截
四、依然直接使用第三方控件a.ocx;在客户端做了下判断,是否已安装了此控件;若未安装,给出链接,下载某exe文件(我就是安装了这个exe文件,电脑上才出现a.ocx文件的),并安装;
但是依然会被IE拦截。
五、直接在客户端注册控件a.ocx,并且提示注册成功,依然拦截。
六、把服务器的IP设为可信站点,依然不好用
〉这几个问题解决方案基本上可行的思路是四,但是不仅是要注册,还要改IE对应的各种安全配置。你在IE里手工改的各种配置都要用exe解决。比如加信任站点、安全设置、插件安全设置。
------解决方案--------------------
ActiveX除了有证书和客户端自己将安全级别降低外好像没有其它解决办法。播放视频的话还是用flash或者silverlight来实现吧