VC++ 設定軟體開機自啟動的方法

來源:互聯網
上載者:User

標籤:esc   current   自啟   script   不同   size   開發   c++   路徑   

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個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.