程序开机自启动

/实现程序开机自启动,在注册表上注册
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、付费专栏及课程。

余额充值