void registerAppInfo(HINSTANCE hInstance) { HINSTANCE hPrevInst = AfxGetResourceHandle(); AfxSetResourceHandle(hInstance); USES_CONVERSION; HRESULT hRes = S_OK; CComPtr<IRegistrar> p; hRes = CoCreateInstance(CLSID_Registrar, NULL, CLSCTX_INPROC_SERVER, IID_IRegistrar, (void**)&p); if (SUCCEEDED (hRes)) { TCHAR szRegKey [MAX_PATH]; CString strAutoCADRegistryPath = acrxProductKey (); _tcscpy (szRegKey, strAutoCADRegistryPath); const TCHAR *pszDelimiter = "\\"; TCHAR *pszToken = _tcstok (szRegKey, pszDelimiter); const TCHAR *pszIds[] = { "SOFTWARE", "AUTODESK", "AUTOCAD", "RELEASE", "AUTH" }; int nCount = 0; while (NULL != pszToken) { p->AddReplacement (T2OLE(pszIds[nCount]), T2OLE(pszToken)); pszToken = _tcstok (NULL, pszDelimiter); if (NULL == pszToken) break; nCount++; } TCHAR szModule [_MAX_PATH]; GetModuleFileName (hInstance, szModule, MAX_PATH); LPOLESTR pszModule = T2OLE (szModule); p->AddReplacement (T2OLE("MODULE"), pszModule); LPCOLESTR szType = OLESTR ("REGISTRY"); p->ResourceRegister (pszModule, IDR_REGISTRY_APP, szType); } AfxSetResourceHandle(hPrevInst); }