VC的ATL向导会生成com对象注册用的rgs文件。如果程序中有想写到注册表中的地方,可以手工编辑这个脚本,可以省去调用一堆操作注册表的API。
关于rgs的详细规则,MSDN上面有,搜索ATL Registrar这个主题即可以看到,下面只是一点简单的介绍:
HKCR //表示下面的注册表项都写到HKCR下面 { SecEdit.EditCtrl.1 = s 'EditCtrl Class' //表示在HKCR下面增加项 SecEdit.EditCtrl.1 ,s 表示值的类型是字符串 { CLSID = s '{E0E9F6EF-871B-42AE-89C9-CD6AF7A2E5D3}' } SecEdit.EditCtrl = s 'EditCtrl Class' { CLSID = s '{E0E9F6EF-871B-42AE-89C9-CD6AF7A2E5D3}' CurVer = s 'SecEdit.EditCtrl.1' } NoRemove CLSID //表示在卸载时,不要把CLSID这个项给删除掉了
{ ForceRemove {E0E9F6EF-871B-42AE-89C9-CD6AF7A2E5D3} = s 'EditCtrl Class' { ProgID = s 'SecEdit.EditCtrl.1' VersionIndependentProgID = s 'SecEdit.EditCtrl' ForceRemove 'Programmable' InprocServer32 = s '%MODULE%' { val ThreadingModel = s 'Apartment' //val表示ThreadingModel是InprocServer32的值,不是子项 } ForceRemove 'Control' ForceRemove 'Insertable' ForceRemove 'ToolboxBitmap32' = s '%MODULE%, 101' 'MiscStatus' = s '0' { '1' = s '131473' } 'TypeLib' = s '{42A31F29-B586-42B3-9F4A-45C73B38EA51}' 'Version' = s '1.0' } } }
除了s表示字符串值外,还可以用d表示DWORD类型的值。