在WinXp下运行正常,载入Dll文件正确,调用DllRegisterServer也正确.
注册表中有正常写入相应的数据,程序运行正常.在Vista下载入Dll文件正确,调用DllRegisterServer也正确.
但是注册表中却没有写入相应的数据.请问这是怎么回事?
注册表中有正常写入相应的数据,程序运行正常.在Vista下载入Dll文件正确,调用DllRegisterServer也正确.
但是注册表中却没有写入相应的数据.请问这是怎么回事?
我确实没看到注册dll后相应键值被修改,
而在程序中直接用代码修改的注册表值是被正常修改了。
BOOL COMRegister( LPCTSTR lpszCOMDLLFileName, BOOL bRegFlag )
{
//ActiveX控件的路径及文件名
CString strCOMDllFileName = lpszCOMDLLFileName; if ( bRegFlag )
{//注册
//装载ActiveX控件
HINSTANCE hLib = LoadLibrary( strCOMDllFileName );
if (hLib == (HINSTANCE)HINSTANCE_ERROR)
{
//AfxMessageBox( _T( "不能载入Dll文件!" ) );
printf("不能载入Dll文件!");
return FALSE;
}
else
{
printf("正常载入Dll文件!\n");
} //获取注册函数DllRegisterServer地址
FARPROC lpDllEntryPoint;
lpDllEntryPoint = GetProcAddress (hLib,("DllRegisterServer")); //调用注册函数DllRegisterServer
if(lpDllEntryPoint!=NULL)
{
if(FAILED((*lpDllEntryPoint)()))
{
//AfxMessageBox( _T( "调用DllRegisterServer失败!" ) );
printf("调用DllRegisterServer失败!\n");
FreeLibrary( hLib );
return FALSE;
};
}
else
{
//AfxMessageBox( _T( "调用 DllRegisterServer 失败!") );
printf("调用DllRegisterServer成功!\n");
return FALSE;
}
}
else
{//反注册
//装载ActiveX控件
HINSTANCE hLib = LoadLibrary( strCOMDllFileName );
if (hLib == (HINSTANCE)HINSTANCE_ERROR)
{
//AfxMessageBox( _T( "不能载入Dll文件!" ) );
return FALSE;
} //获取反注册函数 DllUnregisterServer 地址
FARPROC lpDllEntryPoint;
lpDllEntryPoint = GetProcAddress (hLib, ("DllUnregisterServer"));
//调用注册函数 DllUnregisterServer
if( lpDllEntryPoint != NULL )
{
if( FAILED((*lpDllEntryPoint)()) )
{
//AfxMessageBox( _T( "调用 DllUnregisterServer 失败!" ) );
FreeLibrary( hLib );
return FALSE;
};
}
else
{
//AfxMessageBox( _T( "调用 DllUnregisterServer 失败!") );
return FALSE;
} }
}