此文章为MSWORD.OLB未正确注册导致问题现象及解决方法的代码解决:
代码逻辑:
1、先检测是否注册了wordolb。
检测方法:看能否得到word 文档对象的接口。如果得不到且错误返回码为TYPE_E_CANTLOADLIBRARY,则定义为olb未注册成功。
2、发现未注册,使用regtlibv12.exe注册wordolb。
以下是关键代码:
(1)检测wordolb是否注册
/*
* check if word ole is register
* return 0 MSWORD.OLB is registered
* return -1 MSWORD.OLB is not registered
* return other CoCreateInstance's return
*
*/
int WordOlbRegisterCheck()
{
int nReturn = -2;
const CLSID CLSID_WORD_DOCUMENT_DOC = {0x00020906, 0x0000, 0x0000,{0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46}};
const IID IID_IDocument = {0x0002096b, 0x0000, 0x0000,{0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46}};
CoInitialize(NULL