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组件时会返回服务器启动失败的诡异的问题