c++ 寫注冊表方式讓程序開機自啟動
打開注冊表:win+R, 輸入regedit 點擊確定
你會看到五個根目錄,開機自啟動的信息寫在 HKEY_LOCAL_MACHINE 下面,具體的目錄為 SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run
要怎么將開機自啟動的信息寫入注冊表中呢?其實過程很簡單,第一步,打開注冊表,第二步,寫注冊表,第三步,關閉鍵的句柄
打開注冊表要使用RegOpenKeyEx 函數
LONGRegOpenKeyEx(
HKEYhKey, // 需要打開的主鍵的名稱
LPCTSTRlpSubKey, // 需要打開的子鍵的名稱
DWORDulOptions, // 保留,設為0
REGSAM samDesired, // 安全訪問標記,也就是權限
PHKEYphkResult // 得到的將要打開鍵的句柄
)
第一個參數,我們要傳入
HKEY_LOCAL_MACHINE
第二個參數,我們要傳入
SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run
第三個參數,我們要傳入
0
第四個參數,稍微有點調皮,很多實例都傳入KEY_ALL_ACCESS,但是在64位操作系統下,最好傳入KEY_ALL_ACCESS|KEY_WOW64_64KEY,不然寫完注冊表后,不會顯示寫入的注冊信息
第五個參數,傳入一個HKEY的引用即可
寫注冊表使用RegSetValueEx
函數
LONG RegSetValueEx( HKEY hKey,// RegOpenKeyEx函數中傳入的最后一個參數,也就是打開的鍵的句柄 LPCTSTR lpValueName, // 鍵的名稱 DWORD Reserved, // 傳入NULL DWORD dwType, // 傳入REG_SZ CONST BYTE *lpData, // 要啟動的程序的完整地址 DWORD cbData// lpData的大小 );
貼上代碼,win8 系統下 vs2012
void test()
{
LPCTSTR lpSubKey = L"SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run";
HKEY hKey;
REGSAM flag = KEY_WOW64_64KEY;
DWORD dwDisposition = REG_OPENED_EXISTING_KEY;
LONG lRet = RegOpenKeyEx(HKEY_LOCAL_MACHINE, L"SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run", 0, KEY_ALL_ACCESS|flag,&hKey);
//LONG lRet = ::RegCreateKeyEx(HKEY_LOCAL_MACHINE, lpSubKey, NULL, NULL, REG_OPTION_NON_VOLATILE,KEY_ALL_ACCESS, NULL, &hKey, &dwDisposition);
if ( ERROR_SUCCESS != lRet)
{
return;
}
TCHAR *pchrName = L"D:\\Program Files (x86)\\Tencent\\QQ\\Bin\\QQ.exe";
lRet = ::RegSetValueEx(hKey, TEXT("TEST"), NULL, REG_SZ, (LPBYTE)pchrName, wcslen(pchrName)*sizeof(TCHAR)+1); //設置注冊表項
if ( ERROR_SUCCESS != lRet)
{
return;
}
::RegCloseKey(hKey); //與RegCreateKeyEx配對寫
};
還有一點要說明,在win8系統下,需要獲得管理員權限才能正確運行上述代碼,否則,無法打開注冊表
具體方法如下:
VS2012,在項目屬性-配置屬性-鏈接器-清單文件-UAC執(zhí)行級別
中設為 requireAdministrator (/level='requireAdministrator')
以管理員身份重新運行VS2012
相關文章
c/c++?Error:?redefinition?of?'xxx'的問題及解決方法
兩個類/文件同時引用定義ReplyInfo的頭文件,會造成頭文件中定義重復定義,本文給大家分享c/c++?Error:?redefinition?of?‘xxx’?的問題及解決方法,感興趣的朋友一起看看吧2023-08-08
C/C++中棧(stack)&堆(heap)詳解及其作用介紹
這篇文章主要介紹了C/C++中棧(stack)&堆(heap)詳解及其作用,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下2021-09-09

