<pre name="code" class="cpp">/****/
HKEY RegKey;
LPCSTR KeyPath=_T("Software\\Microsoft\\Windows\\CurrentVersion\\Run");
//打开Run注册项
if(::RegOpenKeyEx(HKEY_LOCAL_MACHINE,KeyPath,0,KEY_READ|KEY_WRITE,&RegKey)==ERROR_SUCCESS)
{
wchar_t lpData[180];
DWORD cbData;
DWORD dwType = REG_SZ;
char keyValue[]="yourName";
if(::RegQueryValueEx(RegKey,keyValue,0,&dwType,(LPBYTE)lpData,&cbData) == ERROR_SUCCESS) //已存在
{
::RegCloseKey(RegKey);//关闭已经打开的注册项
return TRUE;//已注册值,返回
}
else
{
//不存在注册自启动项
::RegCloseKey(RegKey);//关闭已经打开的注册项
CString sPath;
GetModuleFileName(NULL,sPath.GetBufferSetLength(MAX_PATH+1),MAX_PATH);
if(GetFileAttributes(sPath) != -1)
{
RegKey=NULL;
::RegOpenKey(HKEY_LOCAL_MACHINE,KeyPath,&RegKey);
::RegSetValueEx(RegKey,_T("yourName"),0,REG_SZ,(const unsigned char*)(LPCTSTR)sPath,sPath.GetLength());
this->UpdateData(FALSE);
::RegCloseKey(RegKey);//关闭已经打开的注册项
return TRUE;//注册表注册自动启动成功
}
else
{
return FALSE; //注册表注册自动启动失败
}
}
}
else
{
return FALSE;//打开注册表Run项失败
}