VC++程序开机自启动(注册表上注册)

//实现程序开机自启动,在注册表上注册
BOOL CClientTracerDlg::autoRun()
{
 HKEY   RegKey;
 LPCSTR KeyPath="Software//Microsoft//Windows//CurrentVersion//Run";
 //打开Run注册项
 if(::RegOpenKeyEx(HKEY_LOCAL_MACHINE,KeyPath,0,KEY_READ|KEY_WRITE,&RegKey)==ERROR_SUCCESS)
 {
  LPBYTE lpData = new BYTE[80];
  DWORD cbData = 80;
  DWORD dwType = REG_SZ;
  char keyValue[]="GD10000-fjs-ClientTracer";
  if(::RegQueryValueEx(RegKey,keyValue,0,&dwType,lpData,&cbData) == ERROR_SUCCESS) //已存在
  {
   //将lpData 转换成CString 类型
   //CString strValue;
   //strValue = CString(lpData); //键值
   TRACE("GD10000-fjs-ClientTracer已经存在/n");
   //::RegDeleteValue(RegKey,keyValue);//删除该注册值,区别与RegDeleteKey函数
   ::RegCloseKey(RegKey);//关闭已经打开的注册项
   return TRUE;//已注册值,返回
  }
  else
  {
   //不存在注册自启动项
   ::RegCloseKey(RegKey);//关闭已经打开的注册项
   CString   sPath;  
   GetModuleFileName(NULL,sPath.GetBufferSetLength(MAX_PATH+1),MAX_PATH);  
   sPath.ReleaseBuffer();  
   int   nPos;  
   nPos=sPath.ReverseFind('//');  
   sPath=sPath.Left(nPos);  
   CString   lpszFile=sPath+"//ClientTracer.exe";
   CFileFind   fFind;  
   BOOL   bSuccess;  
   bSuccess=fFind.FindFile(lpszFile);  
   fFind.Close();  
   if(bSuccess)  
   {
    CString  fullName;
    fullName=lpszFile;
    RegKey=NULL;
    ::RegOpenKey(HKEY_LOCAL_MACHINE,KeyPath,&RegKey);
    ::RegSetValueEx(RegKey,"GD10000-fjs-ClientTracer",REG_SZ,(const   unsigned   char*)(LPCTSTR)fullName,fullName.GetLength());
    this->UpdateData(FALSE);
    ::RegCloseKey(RegKey);//关闭已经打开的注册项
    return TRUE;//注册表注册自动启动成功
   }  
   else
    return FALSE; //注册表注册自动启动失败
  }
 }
 else return FALSE;//打开注册表Run项失败
}

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值