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);
}
}
C#实现程序开机启动的更多相关文章
- CentOS程序 开机启动设置与chkconfig命令学习
CentOS设置程序开机启动的方法: 1.启动命令添加到/etc/rc.d/rc.local 文件中, 如: vim /etc/rc.d/rc.local #!/bin/sh # # This scr ...
- CentOS设置程序开机启动程序/服务的方法(转)
注意:CentOS 6下基本没什么问题,CentOS 7估计不一定能行. 在CentOS系统下,主要有两种方法设置自己安装的程序开机启动. 1.把启动程序的命令添加到/etc/rc.d/rc.loca ...
- C# winForm程序开机启动和托盘显示 (转http://blog.csdn.net/xinyue3054/article/details/6599508)
这段时间一直进行cs项目,故整理下开机自动运行.托盘.显示.隐藏. (1).在窗口上点击关闭按钮或者最小化时将托盘显示: (2).双击托盘图标显示窗口: (3).右键点击托盘图标提供三个菜单选项,“退 ...
- Qt程序开机启动的怪现象————无法正常显示程序皮肤
事情很简单:最近公司项目在做即时通讯软件,类似QQ.该软件应该支持开机启动这样的常用功能.但是实际上开发该功能的时候碰到了个问题:开机启动程序无法正常加载皮肤文件. 这个问题让我头疼了很久啊.最终确定 ...
- 在android系统上写C语言程序--开机启动该程序不进入安卓系统
今天要写的这篇博文意义重大,也是网上很少有的,这是在我工作中学会的一项技术,当然,它也是由简单的问题组合而来的.如何在安卓中写C语言程序,调试安卓驱动,测试程序的的一项重要技能,下面我就不说废话了,直 ...
- Golang 在 Linux CentOS 6.5 服务器上实现 博客后台程序开机启动
在linux下想实现开机启动的方法很多,这里我采用了在/etc/rc.local里写shell指令的方式. 以下就以我的实际操作为例子讲述,很多地方需要看官自己调整信息哦! 1.在/etc/rc.lo ...
- ubuntu 设置qt程序开机启动
1.建立一个桌面文件,forklift-app.desktop Name填写程序的名字 Exec执行程序的路径 [Desktop Entry] Version=1.0 Name=forklift-ap ...
- Ubuntu 设置程序开机启动(以指定用户身份)
一.方法 在/etc/rc.local写程序的启动命令(系统执行内核过程中会启动init进程,该进程把当前runlevel所对应的的所有service 都启动后,才会执行rc.local里的命令),程 ...
- Linux设置程序开机启动-tomcat开机启动
假设我有一个tomcat应用需要开机启动. 前提你的JAVA环境变量已经配置好没有问题,检测方法如图 然后找到tomcat的目录,我的目录是 /home/yuqing_4.0/tomcat_share ...
随机推荐
- selenium IDE的安装及录制回放的简单使用
1.Selenium IDE下载地址为http://docs.seleniumhq.org/download/(需要翻墙) 2.直接单机“Download version”后面的版本号即可开始下载 3 ...
- centos7.x部署php7.0、mysql
1.安装httpd yum install httpd systemctl start httpd.service #启动命令 systemctl stop httpd.service #停止命令 s ...
- jq-demo-放大镜
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...
- SpringCloud服务消费有哪几种方式?
一.使用LoadBalancerClient LoadBalancerClient接口的命名中,可以看出这是一个负载均衡客户端的抽象定义,spring提供了一个实现 org.springframewo ...
- 关于scroll、client、offset和style中的height、width、top以及bottom属性
内容和图片来自offset.scroll.client三大家族, 此处仅作记录使用 client offset scroll
- 【JZOJ6411】上网
description analysis 如果把所有大小关系连成边,小的往大的连,就可以直接上拓扑 暴力连边时间复杂度\(O(n^2)\),然而连边的过程,考虑用线段树优化 线段树上的所有儿子节点向父 ...
- NX二次开发-UFUN创建工程图注释UF_DRF_create_note
NX9+VS2012 #include <uf.h> #include <uf_drf.h> #include <NXOpen/Annotations_Note.hxx& ...
- 强大的pdf文件操作小工具——PDFtk的小白用法 【转载】
转载出处https://www.cnblogs.com/basterdaidai/p/6204518.html 前言 作为程序员,大家都知道的,总是会被技术小白问各种跟编程没什么关系的硬件.软件问题. ...
- Spring随笔-bean装配-自动装配
Spring提供了三种装配方式 1.XML文件进行显式装配 2.java中进行显示装配 3.自动化装配 1.自动化装配的两种实现方式 1.组件扫描:Spring会自动发现应用上下文中创建的bean 2 ...
- Git 远程仓库分支管理
目录 目录 速查表 关联远程代码仓库 克隆远程仓库 分支管理 创建分支 切换分支 合并分支 删除分支 解决冲突 速查表 指令 作用 git branch 查看分支 git branch newBran ...