最后是用系统默认的administrator账户登录,重新注册了该com组件。
--update 2014/2/18 16:38
另有一台出现同样症状的机器,同样的办法未解决问题。
怀疑是我在administrator账户下做了其他未知关键操作。
回忆之下,症状解除之时,问题机器刚好做了一件看起来不相干的事,安装vs2012.
……
……
……
经两台问题机测试,确实在安装了vs2012以后,就能正常找到该COM的类型了。
还是不知道为什么。。。。。。
怀疑1.vs2010有bug,vs2012安装以后该组件就没问题了;
怀疑2.该com的interop.xx.dll是x86,但com本身是x64的,所以应该用x64。
(interop和com的dll之间是个什么关系?)
(在症状接触之后,这个interop.xx.dll仍然是x86.)
(会不会是vs2012就是完善了interop和com之间的。。。那啥..匹配)
怀疑3.不算怀疑,下回再有测试机会,先直接装11的rt和.net 4.5 rt看看。
-----------------------------------
另,这个COM用regsvr32 xx.dll注册是OK的,但如果用regsvr32 -n -i:user xx.dll 会报“已加载,但找不到入口点DllInstall。”
--update 2014/2/20
前面有怀疑是win7的系统盘造成某些系统文件不对,然后vs2012的安装正好。。。
用msdn的原版win7试过。不是这个原因。
然后一条条安装update中的更新。发现安装了下面这个补丁以后,就OK了。
用于基于x64系统的windows7的microsoft .net framework 4.5.1 kb2858725 (53.7M)
但是kb2858725脱机安装包在微软下载中心是只有5m+的一个补丁。update center看起来像是内容更多。