大佬教程收集整理的这篇文章主要介绍了操作注册表让程序开机运行,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
//是否设置开启开机运行某程序 bool IsEnablePowerOnRunProgram(char *pProgramename,char *pProgramePathName,unsigned char ucIscheckSamePathName) { if (NULL == pProgramePathName || 0 == strlen(pProgramePathName) || NULL == pProgramename || 0 == strlen(pProgrameName)) return false; bool bFind = false; HKEY hRegKey = NULL; LONG lRet = RegOpenKey(HKEY_CURRENT_USER,"Software\\Microsoft\\Windows\\CurrentVersion\\Run",&hRegKey); if (lRet == ERROR_succesS && hRegKey != NULL) { char szValue[MAX_PATH] = { 0 }; DWORD dwSize = MAX_PATH; DWORD dwType = REG_SZ; if (::regQueryValueEx(hRegKey,pProgramename,NULL,&dwType,(LPBYTE)szValue,&dwSizE) == ERROR_succesS) { if (0 == ucIscheckSamePathName) { bFind = true; } else { if (strcmp(szValue,pProgramePathName) == 0) { bFind = true; } } } else { //无法查询有关的注册表信息 bFind = false; } RegCloseKey(hRegKey); } return bFind; } //开启开机运行某程序 bool PowerOnRunProgram(char *pProgramename,char *pProgramePathName) { if (NULL == pProgramePathName || 0 == strlen(pProgramePathName) || NULL == pProgramename || 0 == strlen(pProgrameName)) return false; //判断文件是否存在 if (!PathFileExists(pProgramePathName)) { return true; } HKEY hRegKey = NULL; LONG lRet = RegOpenKey(HKEY_CURRENT_USER,&hRegKey); if (lRet == ERROR_succesS && hRegKey != NULL) { #ifdef UNICODE lRet = RegSETVALueEx(hRegKey,REG_SZ,(const BYTE *)pProgramePathName,_tcslen(pProgramePathName)*2);//这里加上你需要在注册表中注册的内容 #else lRet = RegSETVALueEx(hRegKey,_tcslen(pProgramePathName));//这里加上你需要在注册表中注册的内容 #endif RegCloseKey(hRegKey); if (lRet == ERROR_succesS) { return true; } } return false; } //开机不运行某程序 bool PowerOnStopRunProgram(char *pProgramename,unsigned char ucIscheckSamePathName) { if (NULL == pProgramePathName || 0 == strlen(pProgramePathName) || NULL == pProgramename || 0 == strlen(pProgrameName)) return false; HKEY hRegKey = NULL; LONG lRet = 0; lRet = RegOpenKeyEx(HKEY_CURRENT_USER,KEY_QUERY_VALUE | KEY_WRITE,&hRegKey); if (lRet == ERROR_succesS) { bool bIs@R_452_3673@ = false; if (ucIscheckSamePathName == 0) { bIs@R_452_3673@ = true; } else { char szValue[MAX_PATH] = { 0 }; DWORD dwSize = MAX_PATH; DWORD dwType = REG_SZ; if (::regQueryValueEx(hRegKey,&dwSizE) == ERROR_succesS) { if (strcmp(szValue,pProgramePathName) == 0) { bIs@R_452_3673@ = true; } } } if (bIs@R_452_3673@) { lRet = RegdeleteValue(hRegKey,pProgrameName); } RegCloseKey(hRegKey); if (lRet == ERROR_succesS) { return true; } } return false; }
操作注册表,实现开机自启动应用程序。通过写HKEY_LOCAL_MACHINE或HKEY_CURRENT_USER中的Sofeware\Microsoft\Windows\CurrentVersion\Run值。
在admin用户登录权限下C++可将值写入注册表 HKEY_LOCAL_MACHINE\Sofeware\Microsoft\Windows\CurrentVersion\Run,在非admin用户登录权限下使用管理员权限只能写入到HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Run。实现的效果和admin是一样的。而将值写入注册表 HKEY_LOCAL_MACHINE\Sofeware\Microsoft\Windows\CurrentVersion\Run,无论是管理员权限还是非管理员权限都可以写入成功。
//设置开机运行
if (!IsEnablePowerOnRunProgram(_T("XDemo"),m_szProgramFilePathName,1))
{
PowerOnRunProgram(_T("XDemo"),m_szProgramFilePathName);
}
//设置开机不运行
PowerOnStopRunProgram(_T("XDemo"),0);
@H_727_47@m_szProgramFilePathName为XDemo程序全路径名称。
asInvoker | highestAvailable | requireAdministrator | |
成功复制,无提示 | 成功复制,无提示 | ||
失败复制,无提示 | 成功复制,有提示 | 成功复制,有提示 | 提示输入管理员密码 |
以上是大佬教程为你收集整理的操作注册表让程序开机运行全部内容,希望文章能够帮你解决操作注册表让程序开机运行所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。