吵吵   2011-06-10  阅读:3,091

要实现程序的开机启动,vc最好的办法呢是加注册表了,而且加注册表的位置以前看过好像有9种可以实现开机启动,我这里就不管那么多了,又不是做木马是不,简单实现一下开机启动而已。做个判断,如果有是需要开机启动,已经加了就不再加了,如果不是要开机启动,已经加了的就删了该函数为下:



void CLoginDlg::AutoRun(BOOL bAuto)
{
//写入注册表,开机自启动
HKEY hKey;
//找到系统的启动项
LPCTSTR lpRun = "Software\\Microsoft\\Windows\\CurrentVersion\\Run";
//打开启动项Key

if(::RegOpenKeyEx(HKEY_LOCAL_MACHINE, lpRun, 0, KEY_WRITE | KEY_QUERY_VALUE , &hKey)== ERROR_SUCCESS)
{

char regValue[80];
DWORD dRet=80;
DWORD regType=REG_SZ ;
long lRet=::RegQueryValueEx(hKey,_T("chaochao"),0,®Type, (BYTE *)regValue,&dRet);//先查询一下有没有该键值

if(lRet==0)//该启动键值存在
{

if(!bAuto)//如果不需要开机启动
{
// AfxMessageBox("ok");
RegDeleteValue(hKey,"chaochao");//删除键值www.chaochaoblog.com
RegCloseKey(hKey);
}
}
else//该启动键值不存在

{
if(bAuto)//需要开机启动,我们添加键值
{

char pFileName[MAX_PATH] = {0};

DWORD dwRet = GetModuleFileName(NULL, pFileName, MAX_PATH);
//添加一个子Key,并设置值
lRet = RegSetValueEx(hKey, "chaochao", 0,REG_SZ, (BYTE *)pFileName, dwRet);

//关闭注册表
RegCloseKey(hKey);
if(lRet != ERROR_SUCCESS)
{
AfxMessageBox("系统参数错误,不能随系统启动");
}
}
}

}
}

以上代码在vc6.0中通过,如果有需要,可以仔细研究一下win下的注册表的读写的几个api。

吵吵微信朋友圈,请付款实名加入:

吵吵 吵吵

发表评论

电子邮件地址不会被公开。 必填项已用*标注