windows注冊表:開機自啟動程序配置

????????

目錄

一、注冊表位置

系統范圍的開機自啟動程序

當前用戶的開機自啟動程序

二、配置步驟

三、注意事項

四、其他方法

任務計劃程序

啟動文件夾

1. 創建程序快捷方式

2. 打開 Startup 文件夾

3. 將快捷方式移動到 Startup 文件夾

4. 驗證程序是否自動啟動

注意事項

?五、開機自啟動程序配置示例代碼


????????在Windows操作系統中,注冊表是一個關鍵的數據庫,它存儲了系統和應用程序的設置和選項。設置開機自啟動程序通常涉及到對注冊表的修改。以下是一些關鍵點和注意事項。

一、注冊表位置

系統范圍的開機自啟動程序

????????路徑:HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Run此路徑下的所有鍵值對都指向將在系統啟動時運行的程序。這個位置適用于所有用戶。

當前用戶的開機自啟動程序

  • 路徑:HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run
  • 這個路徑下的鍵值對僅適用于當前登錄的用戶。

二、配置步驟

  1. 打開注冊表編輯器

    • 按下 Win + R,輸入 regedit,按回車。
  2. 導航到目標路徑

    • 根據需要選擇 HKEY_LOCAL_MACHINEHKEY_CURRENT_USER,然后導航到 Software\Microsoft\Windows\CurrentVersion\Run
  3. 添加新的字符串值

    • 右鍵點擊右側窗口,選擇 新建 -> 字符串值
    • 給這個新建的值命名,可以是你要添加的程序的名字。
  4. 設置值的數據

    • 雙擊新建的字符串值,在“數值數據”字段中輸入程序的完整路徑。比如 C:\Program Files\YourProgram\YourProgram.exe

三、注意事項

  1. 路徑和文件名

    • 確保輸入的路徑和文件名是正確的,否則程序將無法啟動。
  2. 權限

    • 在修改 HKEY_LOCAL_MACHINE 時,通常需要管理員權限。確保你有合適的權限來進行這些操作。
  3. 安全性

    • 不要隨便添加不明來源的程序到開機自啟動列表,避免惡意軟件在系統啟動時運行。
  4. 性能

    • 太多的開機自啟動程序可能會延長系統啟動時間。盡量只添加必要的程序。

四、其他方法

????????除了使用注冊表,還可以通過以下方法配置開機自啟動程序:

任務計劃程序

????????使用Windows自帶的任務計劃程序,可以創建在登錄時啟動的任務。

????????按下 Win + R,輸入 taskschd.msc,按回車。

schtasks /create /tn "MyProgramStartup" /tr "C:\Path\To\YourProgram.exe" /sc onlogon /rl highest

?????????windows C++ 注冊登錄計劃任務,用于在Windows中使用Task Scheduler COM接口創建一個在用戶登錄時啟動的計劃任務:

#include <iostream>
#include <comdef.h>
#include <taskschd.h>
#pragma comment(lib, "taskschd.lib")
#pragma comment(lib, "comsupp.lib")void CreateTaskSchedulerTask() {// 初始化COM庫,以支持多線程HRESULT hr = CoInitializeEx(NULL, COINIT_MULTITHREADED);if (FAILED(hr)) {std::cerr << "CoInitializeEx failed: " << hr << std::endl;return;}// 設置COM安全級別hr = CoInitializeSecurity(NULL, -1, NULL, NULL, RPC_C_AUTHN_LEVEL_PKT_PRIVACY, RPC_C_IMP_LEVEL_IMPERSONATE, NULL, 0, NULL);if (FAILED(hr)) {std::cerr << "CoInitializeSecurity failed: " << hr << std::endl;CoUninitialize();return;}// 創建Task Service實例ITaskService* pService = NULL;hr = CoCreateInstance(CLSID_TaskScheduler, NULL, CLSCTX_INPROC_SERVER, IID_ITaskService, (void**)&pService);if (FAILED(hr)) {std::cerr << "CoCreateInstance failed: " << hr << std::endl;CoUninitialize();return;}// 連接到Task Servicehr = pService->Connect(_variant_t(), _variant_t(), _variant_t(), _variant_t());if (FAILED(hr)) {std::cerr << "ITaskService::Connect failed: " << hr << std::endl;pService->Release();CoUninitialize();return;}// 獲取根任務文件夾ITaskFolder* pRootFolder = NULL;hr = pService->GetFolder(_bstr_t(L"\\"), &pRootFolder);if (FAILED(hr)) {std::cerr << "Cannot get Root Folder pointer: " << hr << std::endl;pService->Release();CoUninitialize();return;}// 創建任務定義ITaskDefinition* pTask = NULL;hr = pService->NewTask(0, &pTask);pService->Release();  // 釋放服務指針,因為它不再需要if (FAILED(hr)) {std::cerr << "Failed to create task definition: " << hr << std::endl;pRootFolder->Release();CoUninitialize();return;}// 獲取任務的注冊信息接口,用于設置任務的標識IRegistrationInfo* pRegInfo = NULL;hr = pTask->get_RegistrationInfo(&pRegInfo);if (FAILED(hr)) {std::cerr << "Cannot get identification pointer: " << hr << std::endl;pRootFolder->Release();pTask->Release();CoUninitialize();return;}pRegInfo->put_Author(L"Author Name");  // 設置任務的作者信息pRegInfo->Release();// 獲取觸發器集合ITriggerCollection* pTriggerCollection = NULL;hr = pTask->get_Triggers(&pTriggerCollection);if (FAILED(hr)) {std::cerr << "Cannot get trigger collection: " << hr << std::endl;pRootFolder->Release();pTask->Release();CoUninitialize();return;}// 創建登錄觸發器ITrigger* pTrigger = NULL;hr = pTriggerCollection->Create(TASK_TRIGGER_LOGON, &pTrigger);pTriggerCollection->Release();if (FAILED(hr)) {std::cerr << "Cannot create trigger: " << hr << std::endl;pRootFolder->Release();pTask->Release();CoUninitialize();return;}// 獲取ILogonTrigger接口ILogonTrigger* pLogonTrigger = NULL;hr = pTrigger->QueryInterface(IID_ILogonTrigger, (void**)&pLogonTrigger);pTrigger->Release();if (FAILED(hr)) {std::cerr << "QueryInterface call failed for ILogonTrigger: " << hr << std::endl;pRootFolder->Release();pTask->Release();CoUninitialize();return;}pLogonTrigger->put_Id(_bstr_t(L"Trigger1"));  // 設置觸發器IDpLogonTrigger->Release();// 獲取操作集合IActionCollection* pActionCollection = NULL;hr = pTask->get_Actions(&pActionCollection);if (FAILED(hr)) {std::cerr << "Cannot get action collection: " << hr << std::endl;pRootFolder->Release();pTask->Release();CoUninitialize();return;}// 創建執行操作IAction* pAction = NULL;hr = pActionCollection->Create(TASK_ACTION_EXEC, &pAction);pActionCollection->Release();if (FAILED(hr)) {std::cerr << "Cannot create action: " << hr << std::endl;pRootFolder->Release();pTask->Release();CoUninitialize();return;}// 獲取IExecAction接口IExecAction* pExecAction = NULL;hr = pAction->QueryInterface(IID_IExecAction, (void**)&pExecAction);pAction->Release();if (FAILED(hr)) {std::cerr << "QueryInterface call failed for IExecAction: " << hr << std::endl;pRootFolder->Release();pTask->Release();CoUninitialize();return;}// 設置要執行的程序路徑pExecAction->put_Path(_bstr_t(L"C:\\Path\\To\\YourProgram.exe"));pExecAction->Release();// 注冊任務IRegisteredTask* pRegisteredTask = NULL;hr = pRootFolder->RegisterTaskDefinition(_bstr_t(L"MyProgramStartup"),pTask,TASK_CREATE_OR_UPDATE,_variant_t(L""),_variant_t(L""),TASK_LOGON_INTERACTIVE_TOKEN,_variant_t(L""),&pRegisteredTask);if (FAILED(hr)) {std::cerr << "Error saving the Task : " << hr << std::endl;pRootFolder->Release();pTask->Release();CoUninitialize();return;}std::cout << "Task successfully registered." << std::endl;pRootFolder->Release();pTask->Release();pRegisteredTask->Release();CoUninitialize();
}int main() {CreateTaskSchedulerTask();return 0;
}

XML配置計劃任務:

啟動文件夾

????????將程序快捷方式放置在 C:\ProgramData\Microsoft\Windows\Start Menu\Programs\Startup 文件夾中。

將程序快捷方式放置在 C:\ProgramData\Microsoft\Windows\Start Menu\Programs\Startup 文件夾中,您可以確保該程序在每次啟動 Windows 時自動運行。以下是詳細的步驟:

1. 創建程序快捷方式

如果您已經有程序的快捷方式,請跳過此步驟。

  1. 找到您希望自動啟動的程序的可執行文件(通常以 .exe 結尾)。
  2. 右鍵單擊該文件并選擇“創建快捷方式”。這將在同一文件夾中創建一個快捷方式文件。

2. 打開 Startup 文件夾

  1. Win + R 鍵以打開“運行”對話框。
  2. 輸入 C:\ProgramData\Microsoft\Windows\Start Menu\Programs\Startup 并按 Enter 鍵。這將打開 Startup 文件夾。

3. 將快捷方式移動到 Startup 文件夾

  1. 找到您創建的程序快捷方式。
  2. 右鍵單擊該快捷方式并選擇“剪切”。
  3. 打開 Startup 文件夾后,在空白區域右鍵單擊并選擇“粘貼”。這樣,快捷方式就會被移動到 Startup 文件夾中。

4. 驗證程序是否自動啟動

  1. 重啟您的計算機。
  2. 在 Windows 啟動后,確認您所放置在 Startup 文件夾中的程序是否自動運行。

注意事項

  • 確保您有管理員權限來執行這些操作,特別是訪問和修改 C:\ProgramData 文件夾時。
  • 如果某些程序不適合自動啟動或會導致系統性能問題,請謹慎添加到 Startup 文件夾中。

通過上述步驟,您可以輕松地將任何程序設置為開機自動啟動。

?五、開機自啟動程序配置示例代碼

#include <windows.h>
#include <iostream>bool AddToStartup(const wchar_t* appName, const wchar_t* appPath, const wchar_t* appArgs) {HKEY hKey;LONG lResult;const wchar_t* runKeyPath = L"SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run";// 創建包含程序路徑和參數的完整命令行std::wstring command = L"\"";command += appPath;command += L"\" ";command += appArgs;// 打開注冊表項lResult = RegOpenKeyEx(HKEY_CURRENT_USER, runKeyPath, 0, KEY_WRITE, &hKey);if (lResult != ERROR_SUCCESS) {std::wcerr << L"Failed to open registry key: " << lResult << std::endl;return false;}// 設置注冊表值lResult = RegSetValueEx(hKey, appName, 0, REG_SZ, (const BYTE*)command.c_str(), (command.size() + 1) * sizeof(wchar_t));if (lResult != ERROR_SUCCESS) {std::wcerr << L"Failed to set registry value: " << lResult << std::endl;RegCloseKey(hKey);return false;}// 關閉注冊表項RegCloseKey(hKey);return true;
}int main() {const wchar_t* appName = L"MyApp";const wchar_t* appPath = L"C:\\Path\\To\\YourApp.exe";const wchar_t* appArgs = L"--example-arg";if (AddToStartup(appName, appPath, appArgs)) {std::wcout << L"Successfully added to startup." << std::endl;} else {std::wcerr << L"Failed to add to startup." << std::endl;}return 0;
}

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/pingmian/94532.shtml
繁體地址,請注明出處:http://hk.pswp.cn/pingmian/94532.shtml
英文地址,請注明出處:http://en.pswp.cn/pingmian/94532.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

(11)用于無GPS導航的制圖師SLAM(一)

文章目錄 前言 1 安裝 RPLidar 和 Pixhawk 2 檢查 RPLidar 的串行端口 3 安裝更多軟件包 4 創建Catkin工作空間 5 安裝 RPLidar 節點 6 安裝 Google Cartographer 前言 本頁展示了如何使用 RPLidarA2 激光雷達(RPLidarA2 lidar)設置 ROS 和 Google Cartographer SLAM&a…

車載診斷架構 --- 基于整車功能的正向診斷需求開發

我是穿拖鞋的漢子,魔都中堅持長期主義的汽車電子工程師。 老規矩,分享一段喜歡的文字,避免自己成為高知識低文化的工程師: 做到欲望極簡,了解自己的真實欲望,不受外在潮流的影響,不盲從,不跟風。把自己的精力全部用在自己。一是去掉多余,凡事找規律,基礎是誠信;二是…

字帖生成器怎么用?電腦手機雙端操作指南

字帖生成器是一款支持電腦端和手機端的免費練字工具&#xff0c;可一鍵生成PDF格式字帖并直接打印使用。本文基于官方公開版本&#xff0c;提供無廣告、無營銷的實測操作指南。 工具基礎信息 軟件名稱&#xff1a;字帖生成器適用設備&#xff1a;Windows、安卓/鴻蒙核心功能&…

pycharm 遠程連接服務器報錯

配置遠程鏈接的時候出現報錯 Command finished with exit code 139 Execution was killed due to timeout Failed to execute command Rsync command ‘rsync’ was not found neither in local PATH nor as full executable path Starting introspection for Python… 放假前好…

局域網共享文件夾

準備工作&#xff1a; A電腦&#xff08;共享端&#xff09; B電腦&#xff08;本機&#xff09;在A電腦&#xff0c;選好要共享的目錄&#xff0c;然后右鍵屬性 > 高級共享 > 共享此文件夾 > 權限(全開)然后找到此電腦&#xff0c;右鍵&#xff0c;打開屬性&#xff…

時序數據庫全景指南:從場景選型到內核拆解

1. 什么是時序數據 時序數據&#xff08;Time-Series Data&#xff09; 是在時間上連續產生、且帶有時間戳的觀測值序列&#xff0c;典型特征&#xff1a;維度描述高并發寫百萬點/秒&#xff0c;追加為主寫多讀少90 % 查詢是降采樣或聚合時效性越新越熱&#xff0c;舊數據價值遞…

深入解析 Oracle 內存架構:駕馭 SGA 與 PGA 的性能藝術

引言&#xff1a;數據庫的心臟與大腦如果說磁盤上的數據文件是 Oracle 數據庫的“身體”&#xff0c;是永久存儲的基石&#xff0c;那么內存結構就是其“心臟與大腦”。它負責所有計算活動的發生&#xff0c;決定了數據泵送的速度與效率。一個配置得當、運行順暢的內存體系&…

竣工驗收備案識別技術:通過AI和OCR實現智能化文檔處理,提升效率與準確性,推動建筑行業數字化轉型。

竣工驗收備案是建設工程項目投入使用的最終法定程序&#xff0c;是確保工程符合規劃、質量、消防、環保等各項要求的核心關口。傳統的備案流程依賴大量紙質文檔和人工審核&#xff0c;效率低下且易出錯。隨著人工智能與大數據技術的崛起&#xff0c;竣工驗收備案識別技術應運而…

76 最小覆蓋子串

76 最小覆蓋子串 文章目錄76 最小覆蓋子串1 題目2 解答1 題目 給你一個字符串 s 、一個字符串 t 。返回 s 中涵蓋 t 所有字符的最小子串。如果 s 中不存在涵蓋 t 所有字符的子串&#xff0c;則返回空字符串 "" 。 注意&#xff1a; 對于 t 中重復字符&#xff0c;…

趣味學Rust基礎篇(變量與可變性)

這篇文章將用通俗的比喻和清晰的邏輯&#xff0c;帶你深入理解 Rust 變量背后的核心思想&#xff0c;讓你不僅“會用”&#xff0c;更能“明白為什么”。 Rust 的“盒子哲學”&#xff1a;變量、可變性、常量與隱藏 想象一下&#xff0c;Rust 里的變量就像一個個盒子。你把值&a…

2025年- H100-Lc208--912.排序數組(快速選擇排序)--Java版

1.題目2.思路 快速選擇排序的平均時間復雜度是O&#xff08;nlogn&#xff09;&#xff0c;最壞時間復雜度是O&#xff08;n^2&#xff09;&#xff0c;最好的時間復雜度是O&#xff08;nlogn&#xff09;&#xff0c;空間復雜度是O&#xff08;nlogn&#xff09;。 排序算法中…

解決 pdf.mjs 因 MIME 類型錯誤導致的模塊加載失敗問題

Mozilla PDF.js V4 開始&#xff0c;它官方分發確實只提供了 ESM 模塊&#xff08;.mjs&#xff09;&#xff0c;沒有以前的 pdf.js、pdf.worker.js UMD 版本了。 這個問題本質上是 瀏覽器要求以 application/javascript MIME 類型加載 ES Module&#xff0c;而你引入的 pdf.mj…

STM32八大模式

前言&#xff1a;STM32存在八大模式&#xff0c;分別如下推挽輸出&#xff0c;開漏輸出&#xff0c;復用推挽輸出&#xff0c;復用開漏輸出浮空輸入&#xff0c;上拉輸入&#xff0c;下拉輸入&#xff0c;模擬輸入STM32標準IO結構圖如下&#xff1a;其中如下電路為保護電路&…

OpenCV4.X庫功能全解---個人筆記

文章目錄前言1.Core核心功能1.1 基本數據類型和結構&#xff1a;1.2 數組操作&#xff1a;1.3 數學函數&#xff1a;1.4 隨機數生成&#xff1a;1.5 線性代數運算&#xff1a;1.6 常用數據結構和算法&#xff1a;1.7 XML/YAML文件讀寫&#xff1a;1.8 錯誤處理&#xff1a;1.9時…

代碼隨想錄刷題Day44

二叉搜索樹的最近公共祖先 這道題&#xff0c;可以沿用二叉樹的最近公共祖先的求法進行求解&#xff0c;也就是root判斷-左右子樹遞歸求LCA-根據左右子樹的LCA結果返回值這一套。 但是&#xff0c;如果要用上搜索二叉樹的有序性這個信息的話&#xff0c;就可以直接在遞歸時候確…

springmvc的數據校驗和處理的一個例子

JSR-303是Java 的標準規范&#xff0c;而 Spring MVC 對其提供了完美的支持和集成 1.JSR-303 的身份 JSR-303 是 Java 標準 JSR&#xff1a;Java Specification Request&#xff08;Java 規范請求&#xff09; JSR-303&#xff1a;Bean Validation 1.0&#xff08;Bean 驗證規范…

SlowFast使用指南(三)——自建數據集

寫在前面 在前兩個章節初步使用了SlowFast&#xff0c;使用的都是官方給出的數據集。 附上鏈接&#xff1a; SlowFast使用指南&#xff08;一&#xff09;——demo運行-CSDN博客 SlowFast使用指南&#xff08;二&#xff09;——訓練ava數據集-CSDN博客 本文嘗試了使用自己的數…

Day26 樹的層序遍歷 哈希表 排序算法 內核鏈表

day26 樹的層序遍歷 哈希表 排序算法 內核鏈表 實現樹的層序遍歷&#xff08;廣度遍歷&#xff09; 使用隊列輔助實現二叉樹的層序遍歷。算法核心思想是&#xff1a;從根節點開始&#xff0c;依次將每一層的節點入隊&#xff0c;出隊時訪問該節點&#xff0c;并將其左右子節點&…

【系統分析師】高分論文:論快速應用開發方法及應用

【摘要】 我在某縣衛生健康委員會公共衛生信息中心工作&#xff0c;是信息中心的負責人。2021年5月&#xff0c;我中心受縣瘓病預防控制中心委托&#xff0c;為某種瘓病疫苗3期臨床項日開發受試對象攔截系統。我負責系統架構設計、需求分析以及后期的部分編碼工作。通過與慶病預…

4056:【GESP2403八級】接竹竿

/*4056&#xff1a;【GESP2403八級】接竹竿flag 數組 存儲每個元素出現的位置&#xff0c;nxt[i]j;存儲每個位置 后面第一次出現 與a【i】相等的位置//其中 a【i]a[j] :記錄i的下一個位置 &#xff0c;flag 存儲每個值的位置下一次 具有下一次&#xff0c;相當于的鏈表了&…