C# 设置开机自动启动(注册表方式)
.NET技术交流群 199281001 .欢迎加入。 using System;
using System.Collections.Generic;
using System.Linq;
using System.Runtime.Remoting.Metadata.W3cXsd2001;
using System.Security.Permissions;
using System.Text;
using Microsoft.Win32; //注册表辅助类 Author:BingBing
public static class Regedit
{
//自定义节点名称
public static string NodeName = "XX";
//SOFTWARE节点
public static string SoftWare = "SOFTWARE"; /// <summary>
/// 读取指定名称的注册表的值
/// </summary>
/// <param name="key">注册表值的key</param>
/// <returns></returns>
public static string GetValue(string key)
{ using (var aimdir = Load(SoftWare))
{
using (var child = aimdir.OpenSubKey(NodeName))
{
if (child == null) return null;
var registData = child.GetValue(key);
return registData == null ? null : registData.ToString();
}
}
} /// <summary>
/// 注册表中写数据
/// </summary>
/// <param name="key">注册表值的key</param>
/// <param name="tovalue">值</param>
public static void AddValue(string key, string value)
{
using (var aimdir = Load(SoftWare))
{
using (var child = aimdir.OpenSubKey(NodeName, true))
{
if (child == null) return;
if (ExistsValue(key, NodeName)) return;
child.SetValue(key, value);
}
}
} /// <summary>
/// 删除注册表中指定的注册表项
/// </summary>
/// <param name="key">注册表值中的键</param>
public static void DeleteValue(string key)
{
using (var aimdir = Load(SoftWare))
{
if (!ExistsValue(key, NodeName)) return;
using (var child = aimdir.OpenSubKey(NodeName, true))
{
if (child != null)
{
child.DeleteValue(key); }
}
}
} /// <summary>
/// Load
/// </summary>
/// <returns></returns>
public static RegistryKey Load(string rootName)
{
var software = Registry.CurrentUser;
return software.OpenSubKey(rootName, RegistryKeyPermissionCheck.ReadWriteSubTree, System.Security.AccessControl.RegistryRights.FullControl); } /// <summary>
/// 判断指定注册表项是否存在
/// </summary>
/// <param name="nodeName">注册表左侧节点名称</param>
/// <returns></returns>
public static bool Exists(string nodeName)
{
var exit = false;
using (var aimdir = Load(SoftWare))
{
var subkeyNames = aimdir.GetSubKeyNames();
if (subkeyNames.Any(keyName => keyName == nodeName))
{
exit = true;
} } return exit;
} /// <summary>
/// 判断指定注册表项是否存在
/// </summary>
/// <param name="nodeName">注册表左侧节点</param>
/// <param name="rootName">父节点名称</param>
/// <returns></returns>
public static bool ExistsValue(string key, string rootName)
{
var exit = false;
using (var aimdir = Load(SoftWare))
{
using (var child = aimdir.OpenSubKey(NodeName, true))
{
if (child == null) return exit;
var subkeyNames = child.GetValueNames();
if (subkeyNames.Any(keyName => keyName == key))
{
exit = true;
}
}
} return exit;
} /// <summary>
/// 创建
/// </summary>
/// <param name="name">左侧节点名称</param>
public static void Create(string nodeName)
{
using (var software = Load(SoftWare))
{
if (!Exists(nodeName))
{
software.CreateSubKey(nodeName);
}
}
} /// <summary>
/// 跟随windows一起启动
/// </summary>
/// <param name="path">要启动程序的绝对路径</param>
public static void AutoRun(string path)
{
using (var autorun = Load(SoftWare + @"\Microsoft\Windows\CurrentVersion\Run"))
{
autorun.SetValue("您的软件名", path);
}
} /// <summary>
/// 跟随windows一起启动
/// </summary>
public static void RemoveAutoRun()
{
using (var autorun = Load(SoftWare + @"\Microsoft\Windows\CurrentVersion\Run"))
{
if (autorun.GetValue("您的软件名") == null) return;
autorun.DeleteValue("您的软件名");
}
}
}
C# 设置开机自动启动(注册表方式)的更多相关文章
- C#/WPF/WinForm/.NET程序代码实现软件程序开机自动启动的两种常用方法的示例与源码下载带详细注释-源码代码-注册表方式-启动目录快捷方式
C#/WPF/WinForm/.NET程序代码实现软件程序开机自动启动的两种常用方法的示例与源码下载带详细注释-源码代码-注册表方式-启动目录快捷方式 C#实现自动启动的方法-两种方法 源码下载地址: ...
- CentOS 7.6 RPM 方式安装Oracle19c 后 使用 systemd 的方式设置开机自动启动Oracle数据库
1. 方法简介: 使用systemd 来进行 oracle数据库的启动和关闭操作. 使用的脚本为 lsnrctl和dbstart 2. 修改事项. 需要先修改一下 oracle 的启动脚本配置: vi ...
- CentOS设置开机自动启动某服务
CentOS设置开机自动启动某服务 这里以启动sshd服务为例: 查看sshd是否已经是系统服务: # chkconfig --list |grep sshd 会显示: sshd ...
- centos下安装memcached并设置开机自动启动-两种方法
方法一: 安装memcachedyum install memcached 启动服务并初始化service memcached start -p 11211 -l 127.0.0.1 -d 设置mem ...
- Mongodb 启动关闭脚本并设置开机自动启动Mongodb
配置文件内容:[root@yoon etc]# cat mongod.conf logpath=/export/log/mongodb.loglogappend=truefork = truedbpa ...
- VMware ESXi 6.7服务器设置开机自动启动虚拟机
VMware ESXi 6.7服务器设置开机自动启动虚拟机,具体操作步骤如下 1.登陆到VMware ESXi 6.7 web 界面 2.导航器-->主机-->管理 将自动启动修改为 ...
- 原 Debian设置开机自动启动与关闭
发表于1年前(2013-01-08 13:01) 阅读(2380) | 评论(0) 2人收藏此文章, 我要收藏 赞0 开机自动启动 update-rc.d chkconfig 熟悉debian系统 ...
- IE 将“通过域访问数据源”设置为启用(注册表)
XP HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\Internet Settings\Zones\1\1406 Vista+ HKCU\Softwar ...
- win10如何设置开机自动启动热点WIFI?
1.编写脚本文件(先新建txt文件,编写代码内容netsh wlan start hostednetwork,最后重命名成HotSpot.bat):文件名称:HotSpot.bat,代码内容: net ...
随机推荐
- 浪潮之巅——IT那点事之二—蓝色巨人IBM
蓝色巨人IBM的全称是国际商用机器公司(International Business Machines Corporation),纵观IBM的发展历史,可以看出IBM与机器结缘,以商用为主的发展策略. ...
- 20145314郑凯杰《信息安全系统设计基础》GDB调试32位汇编堆栈分析
20145314郑凯杰<信息安全系统设计基础>GDB调试32位汇编堆栈分析 本篇博客将对第五周博客中的GDB调试32位汇编堆栈进行分析 首先放上以前环境配置的图: 图1: 测试代码: #i ...
- 删除 windows 下 node_modules 过深的目录
本文同步自我的个人博客:http://www.52cik.com/2015/11/13/node-modules-del.html 说到 node 的模块,确实既好用又蛋疼.相信无数人吐槽 node_ ...
- 封印术:shadow dom
置顶文章:<纯CSS打造银色MacBook Air(完整版)> 上一篇:<鼠标滚动插件smoovejs和wowjs> 作者主页:myvin 博主QQ:851399101(点击Q ...
- SQL脚本循环修改数据库字段类型
数据库在设计的时候也许考虑不全面,导致某些字段类型不太准确.比如设计的时候是varchar(1024),但是实际使用的时候却发现太小了,装不下,于是需要修改字段类型为ntext什么的. 我最近就遇到了 ...
- 让C#开发更简单,抽象增删改
相信经常做一些MS,CRM 项目的童鞋非常有体会,大部分时间都是在复制和粘贴,大部分项目框架都是建一个三层,首先是DAL建一些增删改查,然后呢是BLL业务层再建一些增删改查,然后UI层再调用增删改查, ...
- [USACO 1.5.4]checker(水题重做——位运算(lowbit的应用))
描述 检查一个如下的6 x 6的跳棋棋盘,有六个棋子被放置在棋盘上,使得每行.每列有且只有一个,每条对角线(包括两条主对角线的所有平行线)上至多有一个棋子. 0 1 2 3 4 5 6 ------- ...
- EntityFramework_MVC4中EF5 新手入门教程之一 ---1.创建实体框架数据模型
Contoso University Web 应用程序 你会在这些教程中构建的应用程序是一个简单的大学网站. 用户可以查看和更新学生. 课程和教师信息.这里有几个屏幕,您将创建. 这个网站的用户界面 ...
- Nodejs学习笔记(三)--- 模块
目录 简介及资料 自定义模块 创建一个自定义模块 调用自定义模块 exports和module.exports 区别 exports和module.exports 覆盖 其它... 简介及资料 通过N ...
- java多线程-CyclicBarrier
介绍 一个同步辅助类,它允许一组线程互相等待,直到到达某个公共屏障点 (common barrier point).在涉及一组固定大小的线程的程序中,这些线程必须不时地互相等待,此时 CyclicBa ...