首页 > 代码库 > VC++ 设置软件开机自启动的方法
VC++ 设置软件开机自启动的方法
0 概述
软件开机自启动是比较常用的做法,设置方法也有好几种。
1 使用者模式
在“开始菜单”的所有程序中有个“启动”文件夹,可以将需要设置为开机启动的应用程序放在这个文件夹中。但是,这样做存在不足:“启动”文件夹路径在每台电脑有可能是不同的,没法做到一劳永逸。
同时,如果要禁止程序开机启动,可将“启动”文件夹中对应的程序文件移除,也可以“Win+R”输入“msconfig”进行手动设置:
2 开发者模式
作为开发人员,当然写注册表是最好的方法:
1、 新建一个基于对话框的MFC应用程序AutoRun;
2、 添加一个Check Box,ID设置为IDC_CHECK_AUTORUN,文本“开机自启动~”;
3、 在AutoRunDlg.h中添加私有成员变量:int m_nCheakState;
4、 在AutoRunDlg.cpp开始加入代码:
inline void SetAutoRun() { TCHAR szFilePath[MAX_PATH]; memset(szFilePath, 0, MAX_PATH); if (GetModuleFileName(NULL, szFilePath, MAX_PATH)) { HKEY hKey; CString strRegPath = _T("SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run"); if (RegOpenKeyEx(HKEY_LOCAL_MACHINE, strRegPath, 0, KEY_SET_VALUE, &hKey) == ERROR_SUCCESS) { RegSetValueEx(hKey, _T("AutoRun"), 0, REG_SZ, (LPBYTE)szFilePath, (lstrlen(szFilePath) + 1)*sizeof(TCHAR)); } RegCloseKey(hKey); } } inline void ReSetAutoRun() { HKEY hKey; CString strRegPath = _T("SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run"); if (RegOpenKeyEx(HKEY_LOCAL_MACHINE, strRegPath, 0, KEY_SET_VALUE, &hKey) == ERROR_SUCCESS) { RegDeleteValue(hKey, _T("AutoRun")); } RegCloseKey(hKey); }
5、 双击OK按钮,写入代码:
CString strFilePath; TCHAR szFilePath[MAX_PATH]; memset(szFilePath, 0, MAX_PATH); if (GetModuleFileName(NULL, szFilePath, MAX_PATH)) { strFilePath = szFilePath; strFilePath = strFilePath.Left(strFilePath.ReverseFind(‘\\‘)); strFilePath += _T("\\AutoRun.ini"); } CButton* pBtn = (CButton*)GetDlgItem(IDC_CHECK_AUTORUN); int nCheakState = pBtn->GetCheck(); if (m_nCheakState != nCheakState) { if(nCheakState == BST_UNCHECKED) { ReSetAutoRun(); WritePrivateProfileString(_T("AutoRun"), _T("AutoRun"), _T("0"), strFilePath); } else { SetAutoRun(); WritePrivateProfileString(_T("AutoRun"), _T("AutoRun"), _T("1"), strFilePath); } }
6、 编译运行:
PS:
1、 设置开机自启动后,我未能在SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run下找到我设置的注册表键值,重新启动后生效了~
2、 Debug目录下生成的文件,任务栏右击显示“TOD<文件说明>”
版本信息中FileDescription已做过更改,但是不起作用,很纳闷~
将Debug文件夹中的文件移动到其它目录,显示正确
编译的Release文件夹中的文件也显示正确
VC++ 设置软件开机自启动的方法
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。