在组件程序DllMain里,只允许regsvr32.exe和QQ.exe加载,代码如下:
if (dwReason == DLL_PROCESS_ATTACH)
{
if ( lstrcmpi( Loader, _T("QQ.exe")) != 0 && lstrcmpi( Loader, _T("regsvr32.exe"))
!= 0)
return FALSE;
}如果再增加在程序中允许动态装载,也就是可以允许LoadLibrary("xxx.dll")该如何写这句话呢?请赐教,谢谢-)
if (dwReason == DLL_PROCESS_ATTACH)
{
if ( lstrcmpi( Loader, _T("QQ.exe")) != 0 && lstrcmpi( Loader, _T("regsvr32.exe"))
!= 0)
return FALSE;
}如果再增加在程序中允许动态装载,也就是可以允许LoadLibrary("xxx.dll")该如何写这句话呢?请赐教,谢谢-)
任何程序加载时xxx.dll时,都会调用DllMain,所以上面的代码,只能被加载到QQ.exe或regsvr32.exe中。要让其它程序也能加载,只能把程序的进程名称像上面一样写到代码中。
如果你只想要regsvr32.exe和QQ.exe加载。
就这么写
if (dwReason == DLL_PROCESS_ATTACH)
{
GetModuleFileName(NULL, psLoader, MAX_PATH);
_tcslwr(psLoader);
if(_tcsstr(psLoader, _T("regsvr32.exe"))==NULL&&_tcsstr(psLoader, _T("regsvr32.exe"))==NULL)
return FALSE;
}