WPF调用office2010的ppt出错
各位热爱WPF编程小伙伴不可避免的会遇到将ppt嵌入到自己编写的软件,可是有时候会遇到错误,此错误值出现在卸载office2013并安装其他版本office时候会出现。这是由于某些机器上office不能完全卸载造成的,倒是com口不能释放完全。由于office2013在某些机器环境下卸载不完全,在安装其他版本office后,调用ppt的com组件会导致弹窗错误:
“无法将型别 'System.__ComObject' 的 COM 对象转换为接口型别 'Microsoft.Office.Interop.PointPower._Application'。由于发生下列错误,接口 (IID 为 '{{91493440-5A91-11CF-8700-00AA0060263B}') 之 COM 组件上的 QueryInterface 呼叫失败而导致作业失败: 链接库未登录。 (发生例外状况于 HRESULT: 0x8002801D (TYPE_E_LIBNOTREGISTERED))。"}”
手动解决办法:
删除注册表ClassesROOT\TypeLib\{91493440-5A91-11CF-8700-00AA0060263B}项下的2.b即可。
由于本人公司需要,写了一个修改的小工具,需要的可以代码拿去,也可以做一些修改。
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Microsoft.Win32; namespace office2013辅助卸载工具
{
class Program
{
static void Main(string[] args)
{
if (!IsRegeditItemExist())
{
RegistryKey key = Registry.ClassesRoot;
key.DeleteSubKeyTree("TypeLib\\{91493440-5A91-11CF-8700-00AA0060263B}\\2.b", true); //该方法无返回值,直接调用即可
key.Close();
Console.WriteLine("Office2013残留项已经清除!");
Console.ReadLine();
}
else
{
Console.WriteLine("不需要清除,请谨慎操作!");
Console.ReadLine();
} } //判断注册表PrimaryInterAssemblyName项是否存在
private static bool IsRegeditItemExist()
{
string[] subkeyNames;
RegistryKey hkcr = Registry.ClassesRoot;
RegistryKey officeKey = hkcr.OpenSubKey("TypeLib\\{91493440-5A91-11CF-8700-00AA0060263B}\\2.b");
//RegistryKey software = hkml.OpenSubKey("SOFTWARE", true);
subkeyNames = officeKey.GetValueNames();
//取得该项下所有子项的名称的序列,并传递给预定的数组中
foreach (string keyName in subkeyNames)
//遍历整个数组
{
if (keyName == "PrimaryInteropAssemblyName")
//判断子项的名称
{
hkcr.Close();
return true;
}
}
hkcr.Close();
return false;
}
}
}
WPF调用office2010的ppt出错的更多相关文章
- WPF调用Matlab函数方法
有的时候用C#写图像处理方法,比较费事,不如Matlab简单,但是Matlab又做不出WPF那样的好看界面,怎么办呢. 今天正好我要实现这个功能,就顺便写个小例子,给需要的人做个借鉴. 想要用WPF调 ...
- 调用newtonsoft.json反序列出错
调用newtonsoft.json反序列出错: Newtonsoft.Json.JsonSerializationException: Cannot deserialize the current J ...
- WPF [调用线程无法访问此对象,因为另一个线程拥有该对象。] 解决方案以及如何实现字体颜色的渐变
本文说明WPF [调用线程无法访问此对象,因为另一个线程拥有该对象.] 解决方案以及如何实现字体颜色的渐变 先来看看C#中Timer的简单说明,你想必猜到实现需要用到Timer的相关知识了吧. C# ...
- WPF调用图片路径,或资源图片
一.加载本项目的图片WPF引入了统一资源标识Uri(Unified Resource Identifier)来标识和访问资源.其中较为常见的情况是用Uri加载图像.Uri表达式的一般形式为:协议+授权 ...
- 提供PPT嵌入Winform/WPF解决方案,Winform/WPF 中嵌入 office ppt 解决方案
Winform/WPF 中嵌入 office ppt(powerpoint)解决方案示: 1. 在winform中操作ppt,翻页.播放.退出:显示 总页数.当前播放页数 2. 启动播放ppt时录制视 ...
- C# WPF 调用FFMPEG实现“SORRY 为所欲为/王境泽”表情包GIF生成软件
C# WPF 调用FFMPEG实现“SORRY 为所欲为/王境泽”表情包GIF生成 1,调用ffmpeg将外挂字幕“嵌入”视频中,保存副本: 2,调用ffmpeg将副本视频导出为gif图片. 参考资料 ...
- WPF模拟Office2010文件菜单的TabControl模板
原文:WPF模拟Office2010文件菜单的TabControl模板 这是Office2010中的文件菜单点开后的效果.本文我将以强大的WPF(www.itstrike.cn)来实现类似的效果.希望 ...
- WPF 调用资源图片
原文:WPF 调用资源图片 最近做的wpf项目中,在开发的时候,把图片放到了bin下面,采用了imagePath =System.IO.Directory.GetCurrentDirectory()+ ...
- WPF 调用API修改窗体风格实现真正的无边框窗体
原文:WPF 调用API修改窗体风格实现真正的无边框窗体 WPF中设置无边框窗体似乎是要将WindowStyle设置为None,AllowTransparency=true,这样才能达到WinForm ...
随机推荐
- CentOS 7 下引导 Windows7 启动
Win7/CentOS7 u盘安装后会覆盖硬盘上已有系统的’引导‘ CentOS7下恢复Win7引导 编辑 # vim /etc/grub.d/40_custom 添加 menuentry 'Wind ...
- [转]MongoDB for Java】Java操作MongoDB
原文地址: MongoDB for Java]Java操作MongoDB 开发环境: System:Windows IDE:eclipse.MyEclipse 8 Database:mongoDB 开 ...
- PTPX的average power analysis
在average power analysis中,switching activity被分解为toggle rate和static probabilities两部分. annotation的sourc ...
- Python 入門語法和類型(转载学习)
http://www.cnblogs.com/mcdou/archive/2011/08/02/2125016.html Python的设计目标之一是让源代码具备高度的可读性.它设计时尽量使用其它语言 ...
- linux下在eclipse上运行hadoop自带例子wordcount
启动eclipse:打开windows->open perspective->other->map/reduce 可以看到map/reduce开发视图.设置Hadoop locati ...
- sql 循环语句几种方式
--第一 declare @orderNum varchar(255) create table #ttableName(id int identity(1,1),Orders varchar(2 ...
- 鸟哥的linux私房菜学习记录之例行性工作
- 鸟哥的linux私房菜之磁盘与文件系统管理
superblock:记录了该文件系统的整体信息包括inode/block的总量,使用量,剩余量以及文件系统的格式与相关信息. inode:记录档案的属性,一个档案占用一个inode,同事记录此档案所 ...
- ubuntu修改文件权限记录
查看文件权限的命令: 在终端输入: ls -l xxx.xxx (xxx.xxx是文件名) 那么就会出现相类似的信息,主要都是这些: -rw-rw-r-- 一共有10位数 其中: 最前面那个 - 代表 ...
- JSP直接连接sql2008数据库并显示
<%@ page contentType="text/html; charset=utf-8" language="java" errorPage=&qu ...