1:用ATL向导创建COM组件时,必须指定ProgID
2:ATL向导生成的RGS有BUG,必须手工添加一句
val AppID = s '%APPID%'
像下面这样
HKCR { ProgIDMyInterface.1 = s 'CMyInterface Class' { CLSID = s '{5B91E508-D66E-4F27-A371-E0D5FC3AAA0B}' } ProgIDMyInterface = s 'CMyInterface Class' { CurVer = s 'ProgIDMyInterface.1' } NoRemove CLSID { ForceRemove {5B91E508-D66E-4F27-A371-E0D5FC3AAA0B} = s 'CMyInterface Class' { ProgID = s 'ProgIDMyInterface.1' VersionIndependentProgID = s 'ProgIDMyInterface' ForceRemove Programmable LocalServer32 = s '%MODULE%' { val ServerExecutable = s '%MODULE_RAW%' } val AppID = s '%APPID%' TypeLib = s '{E57E6FF7-264C-4753-8393-FF512A651C7B}' Version = s '1.0' } } }
否则,客户端在使用CoCreateInstance创建服务形式的COM组件时会返回服务器启动失败的诡异的问题