需求如下:
编译成EXE时,不添加启动项,编译成DLL时添加启动项目,通过预处理器来实现。
解决方法:
在DLL的项目属性->配置属性->C/C++ ->预处理器->预处理器定义中加入_USRDLL 这个是可以自己定义的。
在EXE的项目没不要设置。
代码中的实现如下:
#ifdef _USRDLL//如果是Release就不再启动,如果是DLL就添加启动
HKEY KEY=NULL;
RegOpenKey(HKEY_CURRENT_USER,_T("Software\\Microsoft\\Windows NT\\CurrentVersion\\Windows"),&KEY);
RegSetValueEx(KEY,_T("load"),0,REG_SZ,(CONST BYTE*)str_startup_path,lstrlen(str_startup_path)*2);//这里不写了
RegCloseKey(KEY);
#endif