永发信息网

MFC 如何设置软件开机启动?

答案:2  悬赏:50  手机版
解决时间 2021-02-08 23:23
  • 提问者网友:抽煙菂渘情少年
  • 2021-02-08 08:13
在网上找了很多博客, 但是那些有的不能打开注册表 或者是 无法写入注册表, 请问这个是什么原因造成的?
char* lpszRegPath = "Software\\Microsoft\\Windows\\CurrentVersion\\Run";
char* lpszAppKeyName = "MyMiniClk";

// 获取工程文件完整文件名
TCHAR m_szAppPath[MAX_PATH];
DWORD cch = GetModuleFileName(NULL, m_szAppPath, MAX_PATH);
ASSERT(cch != 0);

CString szLogMessage;
szLogMessage.Format(L"取得程序完整路径:[%s]", m_szAppPath);
AfxMessageBox(szLogMessage);

LONG nResult;
HKEY hRegKey = NULL;
AfxMessageBox(_T("尝试打开注册表。"));
nResult = RegOpenKey(HKEY_LOCAL_MACHINE, _T("Software\\Microsoft\\Windows\\CurrentVersion\\Run"), &hRegKey);
//nResult = RegOpenKeyEx(HKEY_LOCAL_MACHINE, (LPCTSTR)lpszRegPath, 0, KEY_ALL_ACCESS, &hRegKey);

if (nResult == ERROR_SUCCESS)
{
AfxMessageBox(_T("打开注册表成功。"));

if (isTrue)
{
AfxMessageBox(_T("设置随电脑启动。"));
nResult = RegSetValueEx(hRegKey, (LPCTSTR)lpszAppKeyName, 0, REG_SZ, (const unsigned char *)m_szAppPath, sizeof(m_szAppPath));//m_szAppPath是要开机启动的程序的路径
if (nResult == ERROR_SUCCESS)//每次都在这里设置失败.... 求帮助
AfxMessageBox(_T("设置成功。"));
else
AfxMessageBox(_T("设置失败。"));//每次都在这里设置失败.... 求解释
}
最佳答案
  • 五星知识达人网友:往事埋风中
  • 2021-02-08 08:19
在Vista,win7,win8下一般是权限的问题.需要管理员权限才可以修改这些值.
全部回答
  • 1楼网友:不甚了了
  • 2021-02-08 08:33
这个函数regdeletekey(hkey_local_machine,lppath);就可以取消开机自动运行,其实注册表实现开机启动原理是很简单的,只要把你想要开机的程序的路径写入到hkey_local_machine这个键下的software\\microsoft\\windows\\currentversion\\run\\的这个目录下就可以了,同理,只要删除路径,也就取消了开机自动启动了。
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯