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便可。工具

  因为本人公司须要,写了一个修改的小工具,须要的能够代码拿去,也能够作一些修改。spa

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;
        }
    }
}
相关文章
相关标签/搜索