C#实现程序开机启动

如何用c#实现开机启动?其实用c#实现程序的开机启动大致有两种方法,就是写入注册表或者采用服务程序,最近一直研究着用C#来操作注册表,下面介绍的方法便是用注册表来实现程序随开机启动(高手就不用看了,嘿嘿...)。
1)引入命名空间 using Microsoft.Win32;

//打开注册表子项
RegistryKey key = Registry.LocalMachine.OpenSubKe("SOFTWARE//Microsoft//Windows//CurrentVersion//Run",true);

key.SetValue(程序的名称, 程序的路径);//设置为开机启动
为了安全性,还应该判断设置的文件是否存在以及该子项是否存在,所有完整代码如下:

private void btnShowOpen_Click(object sender, EventArgs e)
        {
            OpenFileDialog open = new OpenFileDialog();
            open.Filter = "可执行文件(*.exe)|*.exe";
            if (open.ShowDialog() == DialogResult.OK)
            {
                txtPath.Text = open.FileName;
            }
        }

private bool runWhenStart(bool started,string exeName, string path)
        {          
           
RegistryKey key =
Registry.LocalMachine.OpenSubKey("SOFTWARE//Microsoft//Windows//CurrentVersion//Run",
true);//打开注册表子项
            if (key == null)//如果该项不存在的话,则创建该子项
            {
                key = Registry.LocalMachine.CreateSubKey("SOFTWARE//Microsoft//Windows//CurrentVersion//Run");
            }
            if (started == true)
            {
                try
                {                   
                    key.SetValue(exeName, path);//设置为开机启动
                    key.Close();
                }
                catch
                {
                    return false;
                }
            }
            else
            {
                try
                {                   
                    key.DeleteValue(exeName);//取消开机启动
                    key.Close();
                }
                catch
                {
                    return false;
                }
            }
            return true;
        }

private void btnSet_Click(object sender, EventArgs e)
        {
            if (txtPath.Text == "")//检查是否选择了文件
            {
                MessageBox.Show("请选择要随计算机一起启动的程序路径!", "消息", MessageBoxButtons.OK, MessageBoxIcon.Information);
                txtPath.Focus();
                return;
            }           
            string path = txtPath.Text.Trim();
            string exeName = path.Substring(path.LastIndexOf("//") + 1);
            if (!File.Exists(path))//检查该文件是否存在
            {
                MessageBox.Show("文件不存在!", "消息", MessageBoxButtons.OK, MessageBoxIcon.Information);
                txtPath.Text = "";
                txtPath.Focus();
                return;
            }
            if (runWhenStart(true,exeName, path))
            {
                MessageBox.Show("设置成功!", "消息", MessageBoxButtons.OK, MessageBoxIcon.Information);
            }
            else
            {
                MessageBox.Show("设置失败!", "消息", MessageBoxButtons.OK, MessageBoxIcon.Information);
            }
        }

private void btnCancel_Click(object sender, EventArgs e)
        {
            if (txtPath.Text == "")//检查是否选择了文件
            {
                MessageBox.Show("请选择要撤销随计算机一起启动的程序路径!", "消息", MessageBoxButtons.OK, MessageBoxIcon.Information);
                txtPath.Focus();
                return;
            }
            string path = txtPath.Text.Trim();
            string exeName = path.Substring(path.LastIndexOf("//") + 1);
            if (!File.Exists(path))//检查该文件是否存在
            {
                MessageBox.Show("文件不存在!", "消息", MessageBoxButtons.OK, MessageBoxIcon.Information);
                txtPath.Text = "";
                txtPath.Focus();
                return;
            }
            if (runWhenStart(false, exeName, path))
            {
                MessageBox.Show("撤销成功!", "消息", MessageBoxButtons.OK, MessageBoxIcon.Information);
            }
            else
            {
                MessageBox.Show("撤销失败!", "消息", MessageBoxButtons.OK, MessageBoxIcon.Information);
            }
        }

时间: 2024-12-17 02:42:16

C#实现程序开机启动的相关文章

CentOS设置程序开机启动程序/服务的方法(转)

注意:CentOS 6下基本没什么问题,CentOS 7估计不一定能行. 在CentOS系统下,主要有两种方法设置自己安装的程序开机启动. 1.把启动程序的命令添加到/etc/rc.d/rc.local文件中,比如下面的是设置开机启动httpd. #!/bin/sh # # This script will be executed *after* all the other init scripts. # You can put your own initialization stuff in

C# Winform 注册程序开机启动

1 开机启动 public static bool SetAutoRun(string keyName, string filePath) { try { RegistryKey Local= Registry.LocalMachine; RegistryKey runKey =Local.CreateSubKey(@"SOFTWARE\Microsoft\Windows\CurrentVersion\Run\"); runKey.SetValue(keyName, filePath)

在android系统上写C语言程序--开机启动该程序不进入安卓系统

今天要写的这篇博文意义重大,也是网上很少有的,这是在我工作中学会的一项技术,当然,它也是由简单的问题组合而来的.如何在安卓中写C语言程序,调试安卓驱动,测试程序的的一项重要技能,下面我就不说废话了,直接说实用的,怎么用这个东西. 关于这个问题,相信很多学Android的都会去关注这个问题,大家普遍会有个这样的疑问:安卓是怎么跑起来的? 最简单的说法,安卓系统是这样加载的: Bootloader------Kernel(对应平台版本的Linux内核)------filesystem文件系统(这个就

脚你一秒钟让你的程序开机启动

点击开始菜单,找到启动文件夹,打开,并把你想要开机启动的程序的快捷方式粘贴过去即可.亲测txt,qq,等都能设置开机启动

node-webkit设置程序开机启动

上一篇写了打包脚本中设置安装时开机启动,这一篇写由node.js来控制程序是否随windows系统开机启动. 首页在项目package.json中加入对windows-shortcuts的引用(手动下载地址https://github.com/j201/windows-shortcuts) "dependencies": { "windows-shortcuts":"*" } 在npm install windows-shortcuts,加入快捷

电脑程序开机启动设置

来源:http://jingyan.baidu.com/article/19020a0ada910f529d2842b1.html 对于设置开机启动的设置,开始->所有程序->启动,将需要开机启动的应用程序放在启动下面: 对于设置开机启动与不启动,可以通过:开始->运行,在运行界面中输入msconfig,按确定键,之后出现如下界面,将启动条目下中相应的 应用程序前面的复选框中添加或去除勾,即可实现相应应用程序在开机是自启动或不启动.

winform 程序开机启动

private void Form1_Load(object sender, EventArgs e) { try { //程序运行位置 string R_startPath = Application.ExecutablePath; //对应于HKEY_LOCAL_MACHINE主键 RegistryKey R_local = Registry.LocalMachine; //开机自动运行 RegistryKey R_run = R_local.CreateSubKey("SOFTWARE\\

C# winForm程序开机启动和托盘显示 (转http://blog.csdn.net/xinyue3054/article/details/6599508)

这段时间一直进行cs项目,故整理下开机自动运行.托盘.显示.隐藏. (1).在窗口上点击关闭按钮或者最小化时将托盘显示: (2).双击托盘图标显示窗口: (3).右键点击托盘图标提供三个菜单选项,“退出”.“隐藏”.“显示”: (4).程序可以设置开机启动,隐藏任务栏显示.就这四个小功能. 1.建一个WinForm程序—FormAuto,将其属性ShowInTaskbar改为false,这样程序将不会在任务栏中显示:将MaximizeBox属性设置为false,屏蔽掉最大化按钮:把StartPo

Golang 在 Linux CentOS 6.5 服务器上实现 博客后台程序开机启动

在linux下想实现开机启动的方法很多,这里我采用了在/etc/rc.local里写shell指令的方式. 以下就以我的实际操作为例子讲述,很多地方需要看官自己调整信息哦! 1.在/etc/rc.local文件中,添加你想要执行的脚本. 比如,我现在要执行的是Golang项目启动的脚本: ficowLogPath="/home/ficow/autoLaunchLog.txt" #launch ficow's blog server cd /home/ficow/ficowblog/sr