C#代碼設(shè)置開(kāi)機(jī)啟動(dòng)示例
在注冊(cè)表啟動(dòng)項(xiàng)里添加一項(xiàng),路徑:SOFTWARE\Microsoft\Windows\CurrentVersion\Run
或者直接:運(yùn)行->regedit找到這個(gè)路徑添加一項(xiàng)。
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using Microsoft.Win32;
namespace CSharpStart
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void btnSet_Click(object sender, EventArgs e)
{
SetAutoRun(@"D:\CSharpStart.exe",true);
}
/// 設(shè)置應(yīng)用程序開(kāi)機(jī)自動(dòng)運(yùn)行
/// 應(yīng)用程序的文件名
/// 是否自動(dòng)運(yùn)行,為false時(shí),取消自動(dòng)運(yùn)行
/// 設(shè)置不成功時(shí)拋出異常
public static void SetAutoRun(string fileName, bool isAutoRun)
{
RegistryKey reg = null;
try
{
if (!System.IO.File.Exists(fileName))
throw new Exception("該文件不存在!");
String name = fileName.Substring(fileName.LastIndexOf(@"\") + 1);
reg = Registry.LocalMachine.OpenSubKey(@"SOFTWARE\Microsoft\Windows\CurrentVersion\Run", true);
if (reg == null)
reg = Registry.LocalMachine.CreateSubKey(@"SOFTWARE\Microsoft\Windows\CurrentVersion\Run");
if (isAutoRun)
reg.SetValue(name, fileName);
else
reg.SetValue(name, false);
}
catch (Exception ex)
{
throw new Exception(ex.ToString());
}
finally
{
if (reg != null)
reg.Close();
}
}
//另外也可以寫(xiě)成服務(wù),不過(guò)服務(wù)的話一般是在后臺(tái)執(zhí)行的,沒(méi)有程序界面。 柯樂(lè)義
}
}
參考:
C# winform程序設(shè)置開(kāi)機(jī)啟動(dòng),當(dāng)讀取配置文件,或者加載圖片如果設(shè)置的是相對(duì)路徑時(shí),開(kāi)機(jī)啟動(dòng)時(shí)會(huì)出現(xiàn)問(wèn)題(直接運(yùn)程程序是沒(méi)問(wèn)題的)。這是因?yàn)殚_(kāi)機(jī)啟動(dòng)的程序要使用絕對(duì)路徑,相對(duì)路徑不行。我們可以通過(guò)Application .StartupPath屬性經(jīng)過(guò)處理得到文件的絕對(duì)路徑問(wèn)題就解決了。
C# 通過(guò)讀寫(xiě)注冊(cè)表來(lái)設(shè)置開(kāi)機(jī)啟動(dòng)想方法很簡(jiǎn)單,網(wǎng)上很多:
/// 開(kāi)機(jī)啟動(dòng)項(xiàng)
/// 是否啟動(dòng)
/// 啟動(dòng)值的名稱
/// 啟動(dòng)程序的路徑
public void RunWhenStart(bool Started, string name, string path)
{
RegistryKey HKLM = Registry.LocalMachine;
RegistryKey Run = HKLM.CreateSubKey(@"SOFTWARE/Microsoft/Windows/CurrentVersion/Run");
if (Started == true)
{
try
{
Run.SetValue(name, path);
HKLM.Close();
}
catch//沒(méi)有權(quán)限會(huì)異常
{ }
}
else
{
try
{
Run.DeleteValue(name);
HKLM.Close();
}
catch//沒(méi)有權(quán)限會(huì)異常
{ }
}
}
或者直接:
//添加啟動(dòng)
RegistryKey ms_run = Registry.LocalMachine.OpenSubKey("SOFTWARE//Microsoft//Windows//CurrentVersion//Run", true);
ms_run.SetValue("mistysoft", Application.ExecutablePath.ToString());
//刪除啟動(dòng)(設(shè)為控,注冊(cè)表項(xiàng)還在)
RegistryKey ms_run = Registry.LocalMachine.OpenSubKey("SOFTWARE//Microsoft//Windows//CurrentVersion//Run", true);
ms_run.SetValue("mistysoft", "");
相關(guān)文章
淺析.NET中AsyncLocal的實(shí)現(xiàn)原理
這篇文章主要為大家詳細(xì)介紹了.NET中AsyncLocal的具體實(shí)現(xiàn)原理,文中的示例代碼講解詳細(xì),具有一定的借鑒價(jià)值,如果有講得不清晰或不準(zhǔn)確的地方,還望指出2023-08-08
C#根據(jù)年月日計(jì)算星期幾的函數(shù)小例子
這篇文章介紹了C#根據(jù)年月日計(jì)算星期幾的函數(shù)小例子,有需要的朋友可以參考一下2013-07-07
C#多線程開(kāi)發(fā)實(shí)戰(zhàn)記錄之線程基礎(chǔ)
線程是一個(gè)獨(dú)立的運(yùn)行單元,每個(gè)進(jìn)程內(nèi)部有多個(gè)線程,每個(gè)線程可以各自同時(shí)執(zhí)行指令,每個(gè)線程有自己獨(dú)立的棧,但是與進(jìn)程內(nèi)的其他線程共享內(nèi)存,這篇文章主要給大家介紹了關(guān)于C#多線程開(kāi)發(fā)實(shí)戰(zhàn)記錄之線程基礎(chǔ)的相關(guān)資料,需要的朋友可以參考下2021-09-09
C# Winform 分頁(yè)功能的實(shí)現(xiàn)
本文主要介紹了C# Winform 分頁(yè)功能的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2022-06-06
C#中System.IO.Pipelines庫(kù)的使用詳解
System.IO.Pipelines 是一個(gè)庫(kù),旨在使在 .NET 中執(zhí)行高性能 I/O 更加容易,本文主要為大家詳細(xì)介紹了System.IO.Pipelines具體使用方法,感興趣的可以了解下2023-12-12

