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

基于C#實(shí)現(xiàn)桌面應(yīng)用程序開機(jī)自啟動(dòng)功能

 更新時(shí)間:2025年06月03日 09:53:37   作者:小碼編匠  
許多桌面應(yīng)用程序開發(fā)中,開機(jī)自啟動(dòng)是一個(gè)常見需求,例如殺毒軟件、系統(tǒng)工具、監(jiān)控程序等,通常都希望能夠在操作系統(tǒng)啟動(dòng)時(shí)自動(dòng)運(yùn)行,本文將以一個(gè)實(shí)際案例為基礎(chǔ),詳細(xì)講解如何通過 配置文件控制是否啟用開機(jī)自啟動(dòng)功能,需要的朋友可以參考下

前言

許多桌面應(yīng)用程序開發(fā)中,開機(jī)自啟動(dòng)是一個(gè)常見需求。例如殺毒軟件、系統(tǒng)工具、監(jiān)控程序等,通常都希望能夠在操作系統(tǒng)啟動(dòng)時(shí)自動(dòng)運(yùn)行,以提升用戶體驗(yàn)或保證服務(wù)的持續(xù)可用性。

本文將以一個(gè)實(shí)際案例為基礎(chǔ),詳細(xì)講解如何通過 配置文件控制是否啟用開機(jī)自啟動(dòng)功能,并結(jié)合 C# 代碼操作 Windows 注冊(cè)表 來實(shí)現(xiàn)該功能。適用于 WinForm、WPF 或其他基于 .NET 的桌面應(yīng)用開發(fā)場(chǎng)景。

正文

一、配置文件設(shè)置

我們使用 App.configWeb.config 文件來定義是否啟用開機(jī)啟動(dòng)功能:

<!-- App.config 配置節(jié) -->
<appSettings>
    <!-- 是否開機(jī)啟動(dòng),TRUE 啟動(dòng),F(xiàn)ALSE 禁止 -->
    <add key="IsBoot" value="FALSE"/>
</appSettings>

注意:如果使用的是 .NET Core 或 .NET 5+,建議使用 appsettings.json 替代 XML 配置文件。

二、讀取配置并操作注冊(cè)表

在 C# 中,我們可以通過 ConfigurationManager.AppSettings 獲取配置項(xiàng),并根據(jù)值決定是否將程序添加到系統(tǒng)的開機(jī)啟動(dòng)項(xiàng)中。

實(shí)現(xiàn)邏輯說明:

  • 如果配置為 "TRUE",則將當(dāng)前程序路徑寫入注冊(cè)表的啟動(dòng)項(xiàng)。

  • 如果配置為 "FALSE",則從注冊(cè)表中刪除對(duì)應(yīng)的啟動(dòng)項(xiàng)。

示例代碼如下:

using System.Configuration;
using Microsoft.Win32;
using System.Diagnostics;
...

string isBoot = ConfigurationManager.AppSettings["IsBoot"]?.Trim().ToUpper();

if (isBoot == "TRUE")
{
    // 設(shè)置開機(jī)啟動(dòng)
    string path = Process.GetCurrentProcess().MainModule.FileName;
    
    using (RegistryKey rk = Registry.LocalMachine.CreateSubKey(@"Software\Microsoft\Windows\CurrentVersion\Run"))
    {
        rk.SetValue("JcShutdown", path, RegistryValueKind.String);
    }
}
else
{
    // 刪除開機(jī)啟動(dòng)項(xiàng)
    try
    {
        using (RegistryKey rk = Registry.LocalMachine.CreateSubKey(@"Software\Microsoft\Windows\CurrentVersion\Run"))
        {
            rk.DeleteValue("JcShutdown", false);
        }
    }
    catch (Exception ex)
    {
        // 處理異常(如鍵不存在)
        Console.WriteLine("刪除開機(jī)啟動(dòng)項(xiàng)失?。? + ex.Message);
    }
}

注冊(cè)表路徑說明:

路徑:HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run

作用:系統(tǒng)啟動(dòng)時(shí)會(huì)加載此路徑下的所有程序。

注意權(quán)限問題:如果你的應(yīng)用沒有管理員權(quán)限,可能無(wú)法寫入 LocalMachine 分支。此時(shí)可以考慮使用 CurrentUser

Registry.CurrentUser.CreateSubKey(@"Software\Microsoft\Windows\CurrentVersion\Run")

三、注意事項(xiàng)

1、權(quán)限要求

寫入 HKEY_LOCAL_MACHINE 需要管理員權(quán)限,否則會(huì)拋出異常。建議在安裝程序中請(qǐng)求 UAC 提權(quán),或改用 CurrentUser。

2、路徑處理

確保路徑正確無(wú)誤,若路徑中包含空格,應(yīng)加上引號(hào):

rk.SetValue("MyApp", "\"" + path + "\"");

3、避免重復(fù)寫入

可先判斷是否存在該項(xiàng),再?zèng)Q定是否寫入,避免頻繁修改注冊(cè)表。

4、兼容性與安全性

不建議對(duì)普通用戶程序使用 LocalMachine,推薦使用 CurrentUser

某些安全軟件可能會(huì)攔截注冊(cè)表修改行為,請(qǐng)確保程序被信任。

總結(jié)

本文詳細(xì)介紹了如何在WinForm 應(yīng)用中實(shí)現(xiàn)"開機(jī)自啟動(dòng)"功能,包括:

  • 使用配置文件控制開關(guān);

  • 通過注冊(cè)表操作實(shí)現(xiàn)開機(jī)啟動(dòng)項(xiàng)的添加與刪除;

  • 對(duì)關(guān)鍵點(diǎn)如權(quán)限、路徑格式、兼容性進(jìn)行了說明。

通過合理配置和編碼,我們可以靈活地控制程序的行為,提升用戶體驗(yàn)的同時(shí)也保障系統(tǒng)的穩(wěn)定性與安全性。

關(guān)鍵詞:C#、WinForm、開機(jī)自啟動(dòng)、注冊(cè)表操作、App.config、配置文件、開機(jī)啟動(dòng)項(xiàng)、.NET 開發(fā)、Windows 程序設(shè)計(jì)、注冊(cè)表路徑

最后

到此這篇關(guān)于基于C#實(shí)現(xiàn)桌面應(yīng)用程序開機(jī)自啟動(dòng)功能的文章就介紹到這了,更多相關(guān)C#桌面應(yīng)用程序自啟動(dòng)內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Unity3D實(shí)現(xiàn)導(dǎo)航效果

    Unity3D實(shí)現(xiàn)導(dǎo)航效果

    這篇文章主要為大家詳細(xì)介紹了Unity3D實(shí)現(xiàn)簡(jiǎn)單導(dǎo)航效果,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2019-02-02
  • C# winform打開Excel文檔的方法總結(jié)(必看篇)

    C# winform打開Excel文檔的方法總結(jié)(必看篇)

    下面小編就為大家?guī)硪黄狢# winform打開Excel文檔的方法總結(jié)(必看篇)。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2017-01-01
  • C#實(shí)現(xiàn)圖片切割的方法

    C#實(shí)現(xiàn)圖片切割的方法

    這篇文章主要介紹了C#實(shí)現(xiàn)圖片切割的方法,涉及C#使用Graphics實(shí)現(xiàn)圖片屬性的相關(guān)設(shè)置、保存等操作技巧,需要的朋友可以參考下
    2017-06-06
  • C# 實(shí)現(xiàn)Zookeeper分布式鎖的參考示例

    C# 實(shí)現(xiàn)Zookeeper分布式鎖的參考示例

    Zookeeper分布式鎖的原理是巧妙的是使用了znode臨時(shí)節(jié)點(diǎn)的特點(diǎn)和監(jiān)聽(watcher)機(jī)制,監(jiān)聽機(jī)制很簡(jiǎn)單,就是我們可以給znode添加一個(gè)監(jiān)聽器,當(dāng)znode節(jié)點(diǎn)狀態(tài)發(fā)生改變時(shí)(如:數(shù)據(jù)內(nèi)容改變,節(jié)點(diǎn)被刪除),會(huì)通知到監(jiān)聽器。本文講解使用c#實(shí)現(xiàn)該功能
    2021-06-06
  • C#實(shí)現(xiàn)十字鏈表的使用示例

    C#實(shí)現(xiàn)十字鏈表的使用示例

    十字鏈表是一種將數(shù)據(jù)存儲(chǔ)在節(jié)點(diǎn)中的數(shù)據(jù)結(jié)構(gòu),每個(gè)節(jié)點(diǎn)包含兩個(gè)指針,分別指向下一個(gè)節(jié)點(diǎn)和上一個(gè)節(jié)點(diǎn),通過定義節(jié)點(diǎn)類和鏈表類,實(shí)現(xiàn)十字鏈表的創(chuàng)建、遍歷、插入和刪除等操作,本文就來實(shí)現(xiàn)一下
    2023-11-11
  • C#之線程同步Mutex類方式

    C#之線程同步Mutex類方式

    這篇文章主要介紹了C#之線程同步Mutex類方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2025-04-04
  • C#字符串與數(shù)值類型、字節(jié)數(shù)組的互相轉(zhuǎn)換實(shí)戰(zhàn)案例

    C#字符串與數(shù)值類型、字節(jié)數(shù)組的互相轉(zhuǎn)換實(shí)戰(zhàn)案例

    最近由于編程的需要,對(duì)C#的類型轉(zhuǎn)換做了一些研究,下面這篇文章主要給大家介紹了關(guān)于C#字符串與數(shù)值類型、字節(jié)數(shù)組的互相轉(zhuǎn)換的相關(guān)資料,文中通過實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2023-06-06
  • c# 托盤雙擊不觸發(fā)單擊事件的實(shí)現(xiàn)方法

    c# 托盤雙擊不觸發(fā)單擊事件的實(shí)現(xiàn)方法

    在開發(fā)winform的時(shí)候我發(fā)現(xiàn),當(dāng)執(zhí)行雙擊操作(notifyIcon1_MouseDoubleClick)時(shí),會(huì)同時(shí)伴隨著單擊事件(notifyIcon1_MouseClick)的發(fā)生。。那如何才能使雙擊事件不觸發(fā)單擊事件呢?
    2009-02-02
  • C#實(shí)現(xiàn)合并多張圖片為GIF動(dòng)態(tài)圖

    C#實(shí)現(xiàn)合并多張圖片為GIF動(dòng)態(tài)圖

    這篇文章主要為大家詳細(xì)介紹了C#如何將把一張又一張的圖片去拼合成一張GIF動(dòng)態(tài)圖片,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以了解一下
    2022-12-12
  • c# 如何更簡(jiǎn)單的使用Polly

    c# 如何更簡(jiǎn)單的使用Polly

    這篇文章主要介紹了c# 如何更簡(jiǎn)單的使用Polly,幫助大家更好的理解和學(xué)習(xí)使用c#,感興趣的朋友可以了解下
    2021-03-03

最新評(píng)論