在我的应用程序中,我正在加载一个类型库,如下所示
ITypeLib *typelib = NULL;
tlbpath = "some path"
hr = LoadTypeLibEx(tlbpath ,REGKIND_REGISTER,&typelib);
hr = RegisterTypeLibForUser(typelib,tlbpath,NULL);
当我以管理员/用户身份运行时,我可以加载tlb并将所有条目加载到注册表中。
当我在会话0中通过服务运行相同的应用程序时,我在加载typelib时收到TYPE_E_CANTLOADLIBRARY
错误。
此外,UnRegisterTypeLibForUser
是否会删除使用LoadTypeLibEx
创建的所有条目。
在我的情况下UnRegisterTypeLibForUser
执行正常,但条目没有在注册表中删除。
我使用下面的代码:
UnRegisterTypeLibForUser(tlibatr->guid,tlibatr->wMajorVerNum,tlibatr->wMinorVerNum, LOCALE_NEUTRAL, SYS_WIN32);
在会话0中运行应用程序时,是否可以告诉LoadTypeLibEx
无法注册的原因以及如何修复它?
答案 0 :(得分:0)
我解决了我的问题。
我给出了tlb的虚拟驱动器路径而不是系统路径。 即X:.... \ vlt.tlb而非E:.. \ XRoot ... \ vlt.tlb
所以在会话0中,我们需要提供系统路径。
感谢Hans Passant。
任何人都可以告诉为什么UnRegisterTypelibForUser不会删除注册表中的条目?