VS2013/MFC基于对话框编程:[16]开机自启动

2025-11-05 07:37:14

1、打开一个已经创建好的项目,我以上篇经验中写到的项目为基础,在对话框上添加一个复选框。

功能:选中复选框则软件会自启动,否则取消自启动。

VS2013/MFC基于对话框编程:[16]开机自启动

2、修改复选框ID为IDC_AutoStart,添加变量CButton m_autoStart;

双击复选框自动生成函数OnBnClickedAutostart。

VS2013/MFC基于对话框编程:[16]开机自启动

3、编辑函数OnBnClickedAutostart以实现自启动或取消自启动;

这个功能需要修改注册表:

1、定义注册表项HKEY heky;

2、通过RegOpenKeyEx函数打开电脑的启动项;

3、通过GetModuleFileName函数获取本软件的全路径;

4、通过RegSetValueEx函数添加注册表项;

取消自启动:

1、通过RegOpenKeyEx函数打开电脑的启动项;

2、通过RegDeleteValue函数删除注册表项;

VS2013/MFC基于对话框编程:[16]开机自启动

4、程序代码:

void CDemoDlg::OnBnClickedAutostart()

{

// TODO:  在此添加控件通知处理程序代码

HKEY hKey;

CString strRegPath = _T("SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run");

//找到系统的启动项  

if (m_autoStart.GetCheck())

{

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("Demo"), 0, REG_SZ, (LPBYTE)szModule, (lstrlen(szModule) + 1)*sizeof(TCHAR));

//添加一个子Key,并设置值,"Demo"是应用程序名字(不加后缀.exe)  

RegCloseKey(hKey); //关闭注册表  

}

else

{

AfxMessageBox(_T("系统参数错误,不能随系统启动"));

}

}

else

{

if (RegOpenKeyEx(HKEY_CURRENT_USER, strRegPath, 0, KEY_ALL_ACCESS, &hKey) == ERROR_SUCCESS)

{

RegDeleteValue(hKey, _T("Demo"));

RegCloseKey(hKey);

}

}

}

测试程序,启动调试。

VS2013/MFC基于对话框编程:[16]开机自启动

5、勾选“自启动”复选框,此时如果电脑带有360安全卫士的话,会弹框提示有用户在修改启动项。这里只要选择信任就行,同时说明了自启动功能已经成功加入到程序中,以后需要删除的时候只需去掉复选框选中状态即可。

怎么样,是不是立马感觉自启动也不是什么了不起的功能。

VS2013/MFC基于对话框编程:[16]开机自启动

6、win+R运行regedit打开注册表,查看注册表:

HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\Run

可以看到新添加的注册表项项

VS2013/MFC基于对话框编程:[16]开机自启动

声明:本网站引用、摘录或转载内容仅供网站访问者交流或参考,不代表本站立场,如存在版权或非法内容,请联系站长删除,联系邮箱:site.kefu@qq.com。
猜你喜欢