首页 新闻 赞助 找找看

急!winform使用adobe pdf reader时报错:未能导入activeX控件,请确保它已经正确注册

0
悬赏园豆:50 [待解决问题]

vs2012环境下winform使用adobe pdf reader,一直报错:未能导入activeX控件。pdf文件单独注册又一直注册不成功。求高人指点!

so...的主页 so... | 初学一级 | 园豆:59
提问于:2015-07-24 09:37
< >
分享
所有回答(2)
0

下载一个ocx组件,去注册一下么,是PDF预览吧,你先看下你工具箱里面有没有这个东西,然后直接拖进来,就OK了

最好能直接下载一个pdf reader,然后再自己的电脑上安装一下

_Vegetables | 园豆:586 (小虾三级) | 2015-07-24 09:41

工具箱里有了,但是拖进去的时候报错:未能引用。我单独注册的时候还不能注册

支持(0) 反对(0) so... | 园豆:59 (初学一级) | 2015-07-24 09:43

@so...: 报什么错,给个截图或者说详细错误之类的

支持(0) 反对(0) _Vegetables | 园豆:586 (小虾三级) | 2015-07-24 09:44

@_Vegetables: 

支持(0) 反对(0) so... | 园豆:59 (初学一级) | 2015-07-24 09:46

@so...: 

支持(0) 反对(0) _Vegetables | 园豆:586 (小虾三级) | 2015-07-24 09:49

@_Vegetables: 拖不动啊,拖过去就报上面那个错误

支持(0) 反对(0) so... | 园豆:59 (初学一级) | 2015-07-24 09:49

@_Vegetables: ArcoPDFLib,AxArcoPDFLib这两个引用失败,能否给我传一份你本地的这两个文件

支持(0) 反对(0) so... | 园豆:59 (初学一级) | 2015-07-24 09:56

@so...: 怎么分发给你?

支持(0) 反对(0) _Vegetables | 园豆:586 (小虾三级) | 2015-07-24 11:55
0

有没有在本地注册下该active控件了,要通过register32现注册下

visonme | 园豆:1674 (小虾三级) | 2015-07-24 10:42

无法注册,注册一直失败,报错0x80070005错误,用管理员权限注册依然此错误

支持(0) 反对(0) so... | 园豆:59 (初学一级) | 2015-07-24 10:44

@so...: 0x80070005 -〉 拒绝访问。先看看文件是否被占用了。

支持(0) 反对(0) Launcher | 园豆:45045 (高人七级) | 2015-07-24 11:36

@Launcher: 没有被占用,对文件降级权限了依然不能注册成功

支持(0) 反对(0) so... | 园豆:59 (初学一级) | 2015-07-24 15:08

@so...: 你注册的是 ArcoPDF.dll 还是 ArcoPDF64.dll ?

支持(0) 反对(0) Launcher | 园豆:45045 (高人七级) | 2015-07-24 15:17

@so...: 你有管理员权限吗?

支持(0) 反对(0) Launcher | 园豆:45045 (高人七级) | 2015-07-24 15:18

@Launcher: 管理员权限下注册的ArcoPDF.dll,报错如下:

支持(0) 反对(0) so... | 园豆:59 (初学一级) | 2015-07-24 15:22

@so...: 那你手动在注册表中把相关项添加上吧。

支持(0) 反对(0) Launcher | 园豆:45045 (高人七级) | 2015-07-24 15:27

@Launcher: 怎么添加,求指教

支持(0) 反对(0) so... | 园豆:59 (初学一级) | 2015-07-24 15:29

@so...: 你先去注册表搜索下3B813CE7-7C10-4F84-AD06-9DF76D97A9AA 和 CA8A9780-280D-11CF-A24D-444553540000

支持(0) 反对(0) Launcher | 园豆:45045 (高人七级) | 2015-07-24 15:39

@Launcher: 然后呢

支持(0) 反对(0) so... | 园豆:59 (初学一级) | 2015-07-24 15:42

@so...: 找到没有,找到后,把内容贴出来看看。

支持(0) 反对(0) Launcher | 园豆:45045 (高人七级) | 2015-07-24 15:44

@Launcher: 

支持(0) 反对(0) so... | 园豆:59 (初学一级) | 2015-07-24 15:51

@so...: 你把 CA8A9780-280D-11CF-A24D-444553540000 展开,看下 InprocServer32 项的值

支持(0) 反对(0) Launcher | 园豆:45045 (高人七级) | 2015-07-24 15:58

@Launcher: 

这是不是说已经注册了

支持(0) 反对(0) so... | 园豆:59 (初学一级) | 2015-07-24 16:00

@so...: 你看那个路径下是否有 AcroPDF.dll ?路径是否同你在 VS 添加时显示的组件的路径一致?

支持(0) 反对(0) Launcher | 园豆:45045 (高人七级) | 2015-07-24 16:02

@Launcher: 路径是对的,vs引用的路径也一致。

支持(0) 反对(0) so... | 园豆:59 (初学一级) | 2015-07-24 16:05

@so...: 你的操作系统是 32 位的?

支持(0) 反对(0) Launcher | 园豆:45045 (高人七级) | 2015-07-24 16:07

@Launcher: 嗯

支持(0) 反对(0) so... | 园豆:59 (初学一级) | 2015-07-24 16:07

@so...: 大哥,方便qq吗,qq直接请教您

支持(0) 反对(0) so... | 园豆:59 (初学一级) | 2015-07-24 16:08

@so...: 看 ProgID 的值,假设为 AcroPDF.PDF.1,然后看看 HKEY_CLASSES_ROOT\AcroPDF.PDF 和 HKEY_CLASSES_ROOT\AcroPDF.PDF.1 是否存在。

支持(0) 反对(0) Launcher | 园豆:45045 (高人七级) | 2015-07-24 16:12

@so...: 再看 TypedLib,检查 [HKEY_CLASSES_ROOT\TypeLib\{05BFD3F1-6319-4F30-B752-C7A22889BCC4}] 是否存在,其内容如下:

[HKEY_CLASSES_ROOT\TypeLib\{05BFD3F1-6319-4F30-B752-C7A22889BCC4}]
@=""

[HKEY_CLASSES_ROOT\TypeLib\{05BFD3F1-6319-4F30-B752-C7A22889BCC4}\1.0]
@="Adobe Acrobat 7.0 Browser Control Type Library 1.0"

[HKEY_CLASSES_ROOT\TypeLib\{05BFD3F1-6319-4F30-B752-C7A22889BCC4}\1.0\0]

[HKEY_CLASSES_ROOT\TypeLib\{05BFD3F1-6319-4F30-B752-C7A22889BCC4}\1.0\0\win32]
@="C:\\Program Files\\Common Files\\Adobe\\Acrobat\\ActiveX\\AcroPDF.dll"

[HKEY_CLASSES_ROOT\TypeLib\{05BFD3F1-6319-4F30-B752-C7A22889BCC4}\1.0\FLAGS]
@="0"

[HKEY_CLASSES_ROOT\TypeLib\{05BFD3F1-6319-4F30-B752-C7A22889BCC4}\1.0\HELPDIR]
@="C:\\Program Files\\Common Files\\Adobe\\Acrobat\\ActiveX\\"
支持(0) 反对(0) Launcher | 园豆:45045 (高人七级) | 2015-07-24 16:13

@so...: IAcroAXDocShim 的注册表项应该是这样的:

[HKEY_CLASSES_ROOT\Interface\{3B813CE7-7C10-4F84-AD06-9DF76D97A9AA}]
@="IAcroAXDocShim"

[HKEY_CLASSES_ROOT\Interface\{3B813CE7-7C10-4F84-AD06-9DF76D97A9AA}\NumMethods]
@="7"

[HKEY_CLASSES_ROOT\Interface\{3B813CE7-7C10-4F84-AD06-9DF76D97A9AA}\ProxyStubClsid]
@="{00020424-0000-0000-C000-000000000046}"

[HKEY_CLASSES_ROOT\Interface\{3B813CE7-7C10-4F84-AD06-9DF76D97A9AA}\ProxyStubClsid32]
@="{EE5A151A-AD2A-4CEE-AD65-228B59F5B4AD}"

[HKEY_CLASSES_ROOT\Interface\{3B813CE7-7C10-4F84-AD06-9DF76D97A9AA}\TypeLib]
"Version"="1.0"
@="{05BFD3F1-6319-4F30-B752-C7A22889BCC4}"
支持(0) 反对(0) Launcher | 园豆:45045 (高人七级) | 2015-07-24 16:14

@so...: 不方便,你还是先卸载 Adobe Reader XI 后,再去下载一个安装吧

支持(0) 反对(0) Launcher | 园豆:45045 (高人七级) | 2015-07-24 16:20

@Launcher: 我本地装的是Adobe Reader X,已经重装过多次了,不好使

支持(0) 反对(0) so... | 园豆:59 (初学一级) | 2015-07-24 16:21

@Launcher: HKEY_CLASSES_ROOT\AcroPDF.PDF 和 HKEY_CLASSES_ROOT\AcroPDF.PDF.1 都存在,但是都存在两个

支持(0) 反对(0) so... | 园豆:59 (初学一级) | 2015-07-24 16:22

@so...: 不好使,那就只能手动修改注册表项。

支持(0) 反对(0) Launcher | 园豆:45045 (高人七级) | 2015-07-24 16:23

@so...: 啥叫都存在两个?

支持(0) 反对(0) Launcher | 园豆:45045 (高人七级) | 2015-07-24 16:23

@so...: 你的机器是不是在域中?

支持(0) 反对(0) Launcher | 园豆:45045 (高人七级) | 2015-07-24 16:30

@Launcher: AcroPDF.PDF 和 AcroPDF.PDF.1存在两个

支持(0) 反对(0) so... | 园豆:59 (初学一级) | 2015-07-24 16:32

@Launcher: 没有在域中

支持(0) 反对(0) so... | 园豆:59 (初学一级) | 2015-07-24 16:32

@so...: 你是说有两个 HKEY_CLASSES_ROOT\AcroPDF.PDF ,另外还有两个 HKEY_CLASSES_ROOT\AcroPDF.PDF.1 吗?

支持(0) 反对(0) Launcher | 园豆:45045 (高人七级) | 2015-07-24 16:35

@Launcher: 其实问题的本质是winform导入adobe reader控件失败,是不是有其他原因引起的呢,不是注册问题呢?

支持(0) 反对(0) so... | 园豆:59 (初学一级) | 2015-07-24 16:35

@Launcher: IAcroAXDocShim注册表找不到

支持(0) 反对(0) so... | 园豆:59 (初学一级) | 2015-07-24 16:38

@so...: 我只能告诉你确实是注册表项的问题,你可以稍微学习点 COM 的知识。IAcroAXDocShim(HKEY_CLASSES_ROOT\Interface\3B813CE7-7C10-4F84-AD06-9DF76D97A9AA) 是 Interface,实现它的类是 AcroPDFClass(HKEY_CLASSES_ROOT\CLSID\CA8A9780-280D-11CF-A24D-444553540000).

 

HKEY_CLASSES_ROOT\AcroPDF.PDF 中记录了版本号和 CLSID,创建 COM 组件时可以通过 CA8A9780-280D-11CF-A24D-444553540000,也可以通过 "AcroPDF.PDF" 或 “AcroPDF.PDF.1” 来创建,因为 HKEY_CLASSES_ROOT\AcroPDF.PDF 中记录了版本号和 CLSID,所以程序可以通过字符串(ProgID)来从注册表得到 CLSID。

支持(0) 反对(0) Launcher | 园豆:45045 (高人七级) | 2015-07-24 16:46

@so...: 你的注册表至少应该包含下列项:

ProgID:

HKEY_CLASSES_ROOT\AcroPDF.PDF

HKEY_CLASSES_ROOT\AcroPDF.PDF.1

TypeLib:

HKEY_CLASSES_ROOT\TypeLib\{05BFD3F1-6319-4F30-B752-C7A22889BCC4}

Interface:

HKEY_CLASSES_ROOT\Interface\{3B813CE7-7C10-4F84-AD06-9DF76D97A9AA}] // IAcroAXDocShim

HKEY_CLASSES_ROOT\Interface\{7EA23D88-569E-4EFD-9851-A1528A7745F9}] // ISPOpenDocuments

HKEY_CLASSES_ROOT\Interface\{E790E1D1-9DE8-4853-8AC6-933D4FD9C927}] // _IAcroAXDocShimEvents

Class:

HKEY_CLASSES_ROOT\CLSID\{CA8A9780-280D-11CF-A24D-444553540000} // 实现 IAcroAXDocShim

HKEY_CLASSES_ROOT\CLSID\{24DA047B-40C0-4018-841B-6B7409F730FC} // 实现 ISPOpenDocuments

支持(0) 反对(0) Launcher | 园豆:45045 (高人七级) | 2015-07-24 16:53

@so...: 你可以使用 Office 的 VBA 编辑器,写入如下代码来测试组件是否正确安装:

dim obj as Object

set obj = CreateObject("AcroPDF.PDF")

set obj = nothing

支持(0) 反对(0) Launcher | 园豆:45045 (高人七级) | 2015-07-24 16:57

@Launcher: 下面这种情况是不是有问题的

 

支持(0) 反对(0) so... | 园豆:59 (初学一级) | 2015-07-24 16:57

@so...: 你必须再看仔细点,AcroPDF.PDF 同 AcroPDF.FDF 是不一样的。

支持(0) 反对(0) Launcher | 园豆:45045 (高人七级) | 2015-07-24 16:59

@Launcher: 大哥,我检查了下,你说的注册表中这些项都有

支持(0) 反对(0) so... | 园豆:59 (初学一级) | 2015-07-24 17:25

@so...: 用这个代码测试过了吗?

dim obj as Object

set obj = CreateObject("AcroPDF.PDF")

set obj = nothing

注册表项都有,每个项的值都对吗?

支持(0) 反对(0) Launcher | 园豆:45045 (高人七级) | 2015-07-24 17:26

@so...: 比较好的方式是你找台正确的机器,把相关的注册表项都对比下。

支持(0) 反对(0) Launcher | 园豆:45045 (高人七级) | 2015-07-24 17:27

@Launcher: 我想想办法吧,谢了

支持(0) 反对(0) so... | 园豆:59 (初学一级) | 2015-07-24 17:30

@so...: 不要灰心,要有信心,理解原理后,就是耐心的动手。你这不算啥,我给客户修复 Office 问题,那可是有好几十个注册表项的。

支持(0) 反对(0) Launcher | 园豆:45045 (高人七级) | 2015-07-24 17:32

@Launcher: 明白,非常感谢您

支持(0) 反对(0) so... | 园豆:59 (初学一级) | 2015-07-24 18:00
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册