登陆 | 免费注册(只需一分钟) | 会员中心

聚宝网   购物专题 基金专题 性专题 饮食专题 教育专题 生活大参考 园林资讯 园艺库 健康专题
  论文专题 家庭养花 园林景观 盆景奇石 激情图库 农业资料库 园林古建 英文站 花卉栽培

聚宝网免费为您提供 最新IT资讯

 

首页 > FAQ > VC.NET
Activex控件在win2003上可以运行 XP却不能运行啊 up有分
时间:2007-06-18  www.jubao163.com  来源: 不详
所属分类:.NET技术 VC.NET
-----------------------------------------

用.net2005做了一个很简单的ActiveX控件,静态的,在2003的系统上可以跑,在XP下看到的就是个红叉。
我已经按照网上的方法做了安全接口,降低了IE的安全等级,添加了信任站点(非httpS认证),使用depends找到了ocx控件依赖的DLL并编写了inf文件,将它们打包成cab。
我唯一没做的就是签名。
我在测试机器上找到了那些原来不存在的依赖的DLL文件,在注册表里面也找到了被注册的控件,这证明cab包被正确运行了。

这个是什么问题啊,各位高手帮帮忙啊
:(

----------------------------------------------------------------------

inf文件如下:
---------------------------------------------------
[version] 
signature="$CHINA$"
AdvancedINF=2.0  

[Add.Code]
HelloAvtiveX.ocx=HelloAvtiveX.ocx
HelloAvtiveX.inf=HelloAvtiveX.inf
msvcr80.dll=msvcr80.dll
mfc80u.dll=mfc80u.dll
msvcp80.dll=msvcp80.dll

[msvcr80.dll]
file-win32-x86=thiscab
FileVersion=8,00,50727,42
DestDir=11
RegisterServer=yes 

[mfc80u.dll]
file-win32-x86=thiscab
FileVersion=8,00,50727,42
DestDir=11
RegisterServer=yes 
 
[msvcp80.dll]
file-win32-x86=thiscab
FileVersion=8,00,50727,42
DestDir=11
RegisterServer=yes 

[HelloAvtiveX.ocx]
file=thiscab
clsid={A3B4C60F-24A7-40E8-A06B-1A5EFE5F0A43}
RegisterServer=yes
FileVersion=1,0,0,1
 
[HelloAvtiveX.inf]
file=thiscab

--------------------------------------------------------

连UP的人都没有啊。。。。。。

--------------------------------------------------------

我帮你up

--------------------------------------------------------

帮顶:
while(1)up;

先指出你的inf文件一点点问题:

1.
文件之间的先后顺序要根据dll、ocx之间的依赖关系排列,
比如:
[Add.Code]
HelloAvtiveX.ocx=HelloAvtiveX.ocx
HelloAvtiveX.inf=HelloAvtiveX.inf
msvcr80.dll=msvcr80.dll
mfc80u.dll=mfc80u.dll
msvcp80.dll=msvcp80.dll
该节中,放在前面的依赖于后面的,比如:如果HelloAvtiveX.ocx依赖于msvcp80.dll,则msvcp80.dll要放在后面,任何一个dll同;

2.
而紧接着的一节[xxx.dll]正好和上面[Add.Code]节的排列顺序反过来,比如你上面的[Add.Code]节最后一个一句是:msvcp80.dll=msvcp80.dll;那么就要先写
[msvcp80.dll]
file-win32-x86=thiscab
FileVersion=8,00,50727,42
DestDir=11
RegisterServer=yes 
....
依此类推

[msvcr80.dll]
file-win32-x86=thiscab
FileVersion=8,00,50727,42
DestDir=11
RegisterServer=yes 

[mfc80u.dll]
file-win32-x86=thiscab
FileVersion=8,00,50727,42
DestDir=11
RegisterServer=yes 
 
[msvcp80.dll]
file-win32-x86=thiscab
FileVersion=8,00,50727,42
DestDir=11
RegisterServer=yes 

[HelloAvtiveX.ocx]
file=thiscab
clsid={A3B4C60F-24A7-40E8-A06B-1A5EFE5F0A43}
RegisterServer=yes
FileVersion=1,0,0,1

3.
另外,有些dll是不需要注册的吧,可以设置RegisterServer=no

--------------------------------------------------------

还有要注意跟操作系统有关的,特别是2003/XP有区别的一些dll也要打包吧:)

--------------------------------------------------------

不好意思,再补充:

你的ActiveX控件是静态的?那么有些dll还是会动态连接进来的,这个时候也要打包到cab并且写入inf文件;建议你全部动态连接试试.

--------------------------------------------------------

好,我试试去

--------------------------------------------------------

不同的系统,可能需要打包的文件更多

--------------------------------------------------------

貌似还是不行啊

--------------------------------------------------------

需要数字签名的问题吧.

--------------------------------------------------------

非要数字签名么?那为什么有的2003的系统可以跑?

--------------------------------------------------------

帮顶下吧,各位

--------------------------------------------------------

ActiveX是用.net2005开发的

--------------------------------------------------------

不知道是不是和.net框架有关系,windows2003中集成了.net框架,但XP中没有

--------------------------------------------------------

友情帮顶,,是处女顶哦 ,我 刚申请的号 哈哈 ,多给点分啊

--------------------------------------------------------

和操作系统有关

--------------------------------------------------------

总结一下,所有的说法都不是正解。
最后我自己在测试服务器上安装了证书颁发的服务,给自己颁发了证书,但是在XP上仍然不能运行。最后我在XP的注册表里面找控件的GUID,但是什么都没找到,说明ocx控件并没被XP安装,这个问题描述错了,所以结贴了,我将另外开帖提问。



推荐文章
联盟网站

浙ICP备 :07003766号 Copyright © 2001-2007 JUBAO163,All rights reserved.