代码改变世界

API开机自启动

2012-08-29 21:23  owenyang  阅读(521)  评论(0编辑  收藏  举报
//////////////////////////////////////////////////////////////////////////
 //运用程序开机自启动
 INT MakeSoftWareStartAuto(LPCTSTR lpValueName)
 {
 	//根键、子键名称、和到子键的句柄
 	HKEY hRoot=HKEY_LOCAL_MACHINE;
 	char *szSubKey="Software\\Microsoft\\Windows\\CurrentVersion\\Run";
 	HKEY hKey;
 	//打开指定子键
 	DWORD dwDisposition=REG_OPENED_EXISTING_KEY;// 如果不存在不创建
 	LONG lRet=::RegCreateKeyEx(hRoot,szSubKey,0,NULL,
 		REG_OPTION_NON_VOLATILE,KEY_ALL_ACCESS,NULL,&hKey,&dwDisposition);
 	if (lRet!=ERROR_SUCCESS)
 	{
 		return -1;
 	}
 	//获得当前执行文件的文件名(包含路径)
 	char szModule[MAX_PATH];
 	::GetModuleFileName(NULL,szModule,MAX_PATH);
 
 	//创建一个新的键值,设计键值数据为文件名
 	lRet=::RegSetValueEx(hKey,lpValueName,0,REG_SZ,(BYTE*)szModule,strlen(szModule));
 	if(lRet==ERROR_SUCCESS)
 	{
 		::RegCloseKey(hKey);
 	}
 }