基於MFC對話方塊程式設計:設定開機自啟動
阿新 • • 發佈:2019-01-30
作業系統: Windows7/Windows10 64位
執行環境: Visual Studio 10
檔案編碼: Unicode
程式設計思路:
設定自啟動:
1、定義登錄檔項HKEY heky;
2、通過RegOpenKeyEx函式開啟電腦的啟動項;
3、通過GetModuleFileName函式獲取本軟體的全路徑;
4、通過RegSetValueEx函式添加註冊表項;
取消自啟動:
1、通過RegOpenKeyEx函式開啟電腦的啟動項;
2、通過RegDeleteValue函式刪除登錄檔項;
void CXXXDlg::Autostart() { m_uCheckState = !m_uCheckState;//BOOL型別的成員變數 HKEY hKey; //找到系統的啟動項 CString lpRun = _T("SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run"); if(m_uCheckState) { //開啟啟動項Key long lRet = RegOpenKeyEx(HKEY_CURRENT_USER, lpRun, 0, KEY_ALL_ACCESS, &hKey); if(lRet == ERROR_SUCCESS) { TCHAR pFileName[MAX_PATH] = {0}; //得到程式自身的全路徑 DWORD dwRet = GetModuleFileName(NULL, pFileName, MAX_PATH); TRACE(pFileName); //新增一個子Key,並設定值 // 下面"Demo"是應用程式名字(不需要加字尾.exe) lRet = RegSetValueEx(hKey, _T("Demo"), 0, REG_SZ, (LPBYTE)pFileName, (lstrlen(pFileName) + 1)*sizeof(TCHAR)); //關閉登錄檔 RegCloseKey(hKey); if(lRet != ERROR_SUCCESS) { MessageBox(_T("系統引數錯誤,設定自啟動失敗!"),_T("提示")); } else { MessageBox(_T("開機啟動設定成功!"), _T("提示")); } } else { MessageBox(_T("系統引數錯誤,設定自啟動失敗!"),_T("提示")); } } else { long lRet = RegOpenKeyEx(HKEY_CURRENT_USER, lpRun, 0, KEY_ALL_ACCESS, &hKey); if(lRet == ERROR_SUCCESS) { RegDeleteValue(hKey, _T("Demo")); //關閉登錄檔 RegCloseKey(hKey); MessageBox(_T("關閉開機啟動成功!"), _T("提示")); } } }
參考文章: