欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

c++ 讓程序開機自動啟動的方法

 更新時間:2017年09月14日 23:20:55   投稿:mdxy-dxy  
這篇文章主要介紹了c++ 讓程序開機自動啟動的方法,需要的朋友可以參考下

當我們在window下編寫自己的程序時,也可以讓自己編寫的程序在電腦開機時自動運行,這主要是修改windows里的注冊表信息,所有開機自動啟動的程序的一些信息都放在注冊表中的某一文件夾下。我們只需在特定的文件夾下寫入我們的程序信息即可。

關于注冊表 我們可以在鍵盤上同時按下 win+r 鍵,在運行串口中輸regedit 回車即可看到注冊表(可以理解為一個大樹,記錄著系統(tǒng)中的信息),我們點擊左邊文件夾,點擊順序為:Software\\Microsoft\\Windows\\CurrentVersion\\Run,在這個文件夾中存放的便是隨機啟動的 程序的信息。舉個例子:當我們使用某個電腦優(yōu)化軟件進行電腦優(yōu)化時,他會檢測到需要開機優(yōu)化的項目,即有些軟件不必要開機就啟動,修改的就是這個文件中的一些信息。

首先我們解釋下所用到的函數(shù)的含義:

RegOpenKeyEx()

函數(shù)功能描述:打開一個指定的注冊表鍵
原型

LONG RegOpenKeyEx(
HKEY hKey, // 需要打開的主鍵的名稱
LPCTSTR lpSubKey, //需要打開的子鍵的名稱
DWORD ulOptions, // 保留,設為0
REGSAM samDesired, // 安全訪問標記,也就是權限
PHKEY phkResult // 得到的將要打開鍵的句柄
)
Parameters
參數(shù):
hKey
入?yún)?,標識當前被 RegCreateKeyEx 或RegOpenKeyEx打開的注冊表鍵的句柄,或者是以下預定義的句柄
HKEY_CLASSES_ROOT
HKEY_CURRENT_USER
HKEY_LOCAL_MACHINE
HKEY_USERS


lpSubKey
入?yún)?,該參?shù)指向一個字符串,該字符串用來保存將要打開的注冊表名稱。如果這個參數(shù)是空,或者是一個指向空串的指針,該函數(shù)將會打開一個由hKey所定義的鍵,在此種情況下,該函數(shù)不會關閉舷墻已經(jīng)打開的句柄。

ulOptions
入?yún)?,保留,設置為0

samDesired
入?yún)ⅰ俗R打開注冊表的權力,如果該參數(shù)的安全描述符不容許當前進程訪問注冊表,則該函數(shù)會返回失敗。此程序中我們使用寫入?yún)?shù)即:KEY_WRITE (0x20006)。

phkResult
出參,指向一個變量的指針,該變量用來保存打開注冊表鍵的句柄。如果不再使用返回的句柄,則調用RegCloseKey來關閉它。

返回值:
ERROR_SUCCESS表示該函數(shù)執(zhí)行成功,非零值表示該函數(shù)執(zhí)行失敗。想要獲得錯誤描述,調用FormatMessage函數(shù),并傳入FORMAT_MESSAGE_FROM_SYSTEM參數(shù)。

二:
GetModuleFileName(NULL,pFileName, MAX_PATH);
函數(shù)原型獲取當前進程已加載模塊的文件的完整路徑,該模塊必須由當前進程加載。)

DWORDGetModuleFileName(
HMODULE hModule,
LPTSTR lpFilename,
DWORD nSize
);
HMODULE hModule: 裝載一個程序實例的句柄。如果該參數(shù)為NULL,該函數(shù)返回該當前應用程序的全路徑。
lpFileName: 是你存放返回的名字的內(nèi)存塊的指針,是一個輸出參數(shù)。
DWORD nSize:裝載到緩沖區(qū)lpFileName的最大值。

注意:如果想獲得某個正在運行的EXE或者DLL的全路徑可以這樣寫代碼
GetModuleFileNameEx(hProcess,hInst,lpFile,MAX_PATH);//注意下緩沖區(qū)就行了。

三:

RegSetValueEx():想要設置的注冊表項下不是默認值,即有名稱值的數(shù)據(jù)和類型時,可以調用RegSetValueEx函數(shù),該函數(shù)將在注冊表項下設置指定值的數(shù)據(jù)和類型。

LONG RegSetValueEx(
HKEY hKey,
LPCTSTR lpValueName,
DWORD Reserved,
DWORD dwType,
CONST BYTE *lpData,
DWORD cbData
);
hKey: 一個已打開項的句柄
lpValueName:指向一個字符串的指針,該字符串包含了欲設置值的名稱。若擁有該值名稱的值并不存在于指定的注冊表項中,則此函數(shù)將其加入到該項。
Reserved:保留值,必須強制為0
dwType: 指定將被存儲的數(shù)據(jù)類型
lpData: 指向一個緩沖區(qū),該緩沖區(qū)包含了欲為指定值名稱存儲的數(shù)據(jù)。
cbData:指定由lpData參數(shù)所指向的數(shù)據(jù)的大小,單位是字節(jié)。

以下代碼時實現(xiàn)讓本程序開機自啟的方法.
我們建立個對話框程序,在對話框上放一個button,然后在其消息響應函數(shù)中寫如下代碼:

void CSetAutoRunDlg::OnBnClickedButton1()
{
	// TODO: 在此添加控件通知處理程序代碼
	
	HKEY hKey;  //可以理解為操作注冊表的句柄
  
	//找到系統(tǒng)的啟動項  ,長指針類型是const char * 類型
  LPCTSTR lpRun = "Software\\Microsoft\\Windows\\CurrentVersion\\Run";  
  
  //打開啟動項Key  
  long lRet = RegOpenKeyEx(HKEY_LOCAL_MACHINE, lpRun, 0, KEY_WRITE, &hKey);  
  
	if(lRet == ERROR_SUCCESS)  //打開成功
  {  
    char pFileName[MAX_PATH] = {0};  //定義數(shù)組存放路徑
    //得到程序自身的全路徑  
    DWORD dwRet = GetModuleFileName(NULL, pFileName, MAX_PATH);  
    //添加一個子Key,并設置值 // 下面的"test"是應用程序名字(不加后綴.exe) 
    lRet = RegSetValueEx(hKey, "SetAutoRun", 0, REG_SZ, (BYTE *)pFileName, dwRet);  
    //關閉注冊表  
    RegCloseKey(hKey);  
    if(lRet != ERROR_SUCCESS)  
    {  
      MessageBox("系統(tǒng)參數(shù)錯誤,不能完成開機啟動設置");  
    }  
    else 
    { 
      MessageBox("打開開機啟動成功");  
    } 
    // isrun = 1; 
  }  
}

點擊運行后,出現(xiàn)"啟動成功"對話框,重啟電腦后,軟件開機啟動(當運行程序時,有的殺毒軟件可能會發(fā)出注冊表修改的警告,那正是我們的程序在修改注冊表)

相關文章

  • C++入門概覽和嘗試創(chuàng)建第一個C++程序

    C++入門概覽和嘗試創(chuàng)建第一個C++程序

    這篇文章主要介紹了C++入門概覽和嘗試創(chuàng)建第一個C++程序,同時也包括編寫類的示例展示C++面向對象的特性,需要的朋友可以參考下
    2015-09-09
  • C++獲取任務欄打開程序窗口示例

    C++獲取任務欄打開程序窗口示例

    這篇文章主要介紹了C++獲取任務欄打開程序窗口,大家可以參考使用
    2013-11-11
  • C++數(shù)據(jù)結構之實現(xiàn)鄰接表

    C++數(shù)據(jù)結構之實現(xiàn)鄰接表

    這篇文章主要為大家詳細介紹了C++數(shù)據(jù)結構之實現(xiàn)鄰接表,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2020-04-04
  • C++的array和&array有什么區(qū)別

    C++的array和&array有什么區(qū)別

    本文主要介紹了C++的array和&array有什么區(qū)別,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2022-08-08
  • C語言實現(xiàn)將彩色bmp圖像轉化為灰圖、灰度圖像反色

    C語言實現(xiàn)將彩色bmp圖像轉化為灰圖、灰度圖像反色

    這篇文章主要為大家詳細介紹了C語言實現(xiàn)將彩色bmp圖像轉化為灰圖、灰度圖像反色,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-10-10
  • C++ 實現(xiàn)的通訊錄管理系統(tǒng)詳解

    C++ 實現(xiàn)的通訊錄管理系統(tǒng)詳解

    這篇文章主要為大家詳細介紹了C++實現(xiàn)通訊錄管理系統(tǒng),文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-10-10
  • C++簡單五子棋的AI設計實現(xiàn)

    C++簡單五子棋的AI設計實現(xiàn)

    這篇文章主要為大家詳細介紹了C++簡單五子棋的AI設計實現(xiàn),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-09-09
  • vsCode配置import@路徑提示的實現(xiàn)步驟

    vsCode配置import@路徑提示的實現(xiàn)步驟

    在導入文件設置路徑的時候方便了很多,本文主要介紹了vsCode配置import@路徑提示的實現(xiàn)步驟,具有一定的參考價值,感興趣的可以了解一下
    2023-08-08
  • C語言宏定義的擴展定義講解

    C語言宏定義的擴展定義講解

    這篇文章主要介紹了C語言宏定義的擴展,宏定義是C語言提供的三種預處理功能的其中一種,這三種預處理包括:宏定義、文件包含、條件編譯
    2022-12-12
  • C語言實現(xiàn)餐飲管理系統(tǒng)

    C語言實現(xiàn)餐飲管理系統(tǒng)

    這篇文章主要為大家詳細介紹了C語言實現(xiàn)餐飲管理系統(tǒng),文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-03-03

最新評論