新建一个WinForm程序,放两Button(添加、删除用的)
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 kaijiqidong
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void btnAdd_Click(object sender, EventArgs e)
{
RegistryKey hklm = Registry.LocalMachine;//需要引用 Microsoft.Win32
//定义hklm指向注册表的LocalMachine,对注册表的结构,可以在windows的运行里,输入regedit,运行后,可以看看里面的各个子键,
//其中Software\Microsoft\Windows\CurrentVersion\Run就是关系到系统中随系统启动而启动的程序,通称启动项
RegistryKey run = hklm.CreateSubKey(@"Software\Microsoft\Windows\CurrentVersion\Run");
try
{
//Application.StartupPath ------------ 获取到文件夹的路径(F:\MyProject\kaijiqidong\kaijiqidong\bin\Debug)
//Application.ExecutablePath ------------ 获取到可执行文件的路径(F:\MyProject\kaijiqidong\kaijiqidong\bin\Debug\kaijiqidong.exe)
run.SetValue("kaijiqidong.exe", Application.ExecutablePath);//这里只需要改变这两个参数就可以启动其他的程序了
MessageBox.Show("添加注册表启动项成功!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
hklm.Close();
}
catch (Exception my)
{
MessageBox.Show(my.Message.ToString(), "提示", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
}
private void btnRemove_Click(object sender, EventArgs e)
{
RegistryKey hklm = Registry.LocalMachine;
RegistryKey run = hklm.CreateSubKey(@"Software\Microsoft\Windows\CurrentVersion\Run");
try
{
run.DeleteValue("kaijiqidong.exe");
MessageBox.Show("移除注册表启动项成功!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
hklm.Close();
}
catch (Exception my)
{
MessageBox.Show(my.Message.ToString(), "提示", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
}
private void Form1_Load(object sender, EventArgs e)
{
MessageBox.Show("Hello I'm Started!!!");
}
}
}
点击添加按钮后,去查看注册表是否添加成功,regedit 在 HKEY_LOCAL_MACHINE中 的 Software\Microsoft\Windows\CurrentVersion\Run
kaijiqidong.exe已经添加到注册表里面了,重启就会看到kaijiqidong.exe已经开机启动了