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;
        }
    }
}
相關文章
相關標籤/搜索