MFC开机自启和关闭

写在前面:开机自启和关闭是注册表的操作

运行系统:win7(其他系统没有尝试,不知是否通用)

运行环境:VS2013

1.在**Dlg.h中声明

class **Dlg : public CDialogEx
{
    ...
    ...
    ...
public:
	void SetAutoRun(BOOL bAutoRun);//开机自启
};

2.在**Dlg.cpp中自写函数SetAutoRun()

/*bAutoRun为true的话就会开机自启(在初始化函数中调用此函数),否者关闭开机自启(在OnCancel()函数中进行调用)*/

void **Dlg::SetAutoRun(BOOL bAutoRun)
{
	HKEY hKey;
	CString strRegPath = _T("SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run");//找到系统的启动项
	if (bAutoRun)
	{
		if (RegOpenKeyEx(HKEY_CURRENT_USER, strRegPath, 0, KEY_ALL_ACCESS, &hKey) == ERROR_SUCCESS) //打开启动项
		{
			TCHAR szModule[_MAX_PATH];
			GetModuleFileName(NULL, szModule, _MAX_PATH);//得到本程序自身的全路径
			RegSetValueEx(hKey, _T("Client"), 0, REG_SZ, (const BYTE*)(LPCSTR)szModule, strlen(szModule)); //添加一个子Key,并设置值,"Client"是应用程序名字(不加后缀.exe)
			RegCloseKey(hKey); //关闭注册表
		}
		else
		{
			AfxMessageBox(_T("系统参数错误,不能随系统启动"));
		}
	}
	else
	{
		if (RegOpenKeyEx(HKEY_CURRENT_USER, strRegPath, 0, KEY_ALL_ACCESS, &hKey) == ERROR_SUCCESS)
		{
			RegDeleteValue(hKey, _T("Client"));
			RegCloseKey(hKey);
		}
	}
}

3.在对话框的取消函数即:OnCancel() //这个是相应的系统函数

此函数作用为:取消开机自启功能

void CQQHideWndDlg::OnCancel()
{
	// TODO:  在此添加专用代码和/或调用基类
	SetAutoRun(false);//取消开机自启
	CDialogEx::OnCancel();
}
4.在**Dlg.cpp中的初始化函数(即:OnInitDialog()函数)中进行开机自启的调用

此函数作用为:启动开机自启功能

BOOL CQQHideWndDlg::OnInitDialog()
{
	CDialogEx::OnInitDialog();
	...
        ...
	...
	SetAutoRun(TRUE);//设置开机自动启动

	return TRUE;  // 除非将焦点设置到控件,否则返回 TRUE
}
5.大功告成,开始验证开机自启和关闭功能


/*************************************************欢迎提出BUG*************************************************/

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值