.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# 设置开机自动启动(注册表方式)的更多相关文章

  1. C#/WPF/WinForm/.NET程序代码实现软件程序开机自动启动的两种常用方法的示例与源码下载带详细注释-源码代码-注册表方式-启动目录快捷方式

    C#/WPF/WinForm/.NET程序代码实现软件程序开机自动启动的两种常用方法的示例与源码下载带详细注释-源码代码-注册表方式-启动目录快捷方式 C#实现自动启动的方法-两种方法 源码下载地址: ...

  2. CentOS 7.6 RPM 方式安装Oracle19c 后 使用 systemd 的方式设置开机自动启动Oracle数据库

    1. 方法简介: 使用systemd 来进行 oracle数据库的启动和关闭操作. 使用的脚本为 lsnrctl和dbstart 2. 修改事项. 需要先修改一下 oracle 的启动脚本配置: vi ...

  3. CentOS设置开机自动启动某服务

    CentOS设置开机自动启动某服务   这里以启动sshd服务为例:   查看sshd是否已经是系统服务:   # chkconfig --list |grep sshd 会显示:  sshd     ...

  4. centos下安装memcached并设置开机自动启动-两种方法

    方法一: 安装memcachedyum install memcached 启动服务并初始化service memcached start -p 11211 -l 127.0.0.1 -d 设置mem ...

  5. Mongodb 启动关闭脚本并设置开机自动启动Mongodb

    配置文件内容:[root@yoon etc]# cat mongod.conf logpath=/export/log/mongodb.loglogappend=truefork = truedbpa ...

  6. VMware ESXi 6.7服务器设置开机自动启动虚拟机

    VMware ESXi 6.7服务器设置开机自动启动虚拟机,具体操作步骤如下 1.登陆到VMware ESXi 6.7  web 界面 2.导航器-->主机-->管理  将自动启动修改为 ...

  7. 原 Debian设置开机自动启动与关闭

    发表于1年前(2013-01-08 13:01)   阅读(2380) | 评论(0) 2人收藏此文章, 我要收藏 赞0 开机自动启动 update-rc.d chkconfig 熟悉debian系统 ...

  8. IE 将“通过域访问数据源”设置为启用(注册表)

    XP HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\Internet Settings\Zones\1\1406 Vista+ HKCU\Softwar ...

  9. win10如何设置开机自动启动热点WIFI?

    1.编写脚本文件(先新建txt文件,编写代码内容netsh wlan start hostednetwork,最后重命名成HotSpot.bat):文件名称:HotSpot.bat,代码内容: net ...

随机推荐

  1. 20145208 实验四 Android开发基础

    20145208 实验四 Android开发基础 安装Android Studio 安装的具体步骤在老师的链接中已经很详细了,在此就不做赘述了. 在此提出我觉得安装的时候需要注意的两个地方 一是安装地 ...

  2. Qt opencv程序运行异常

    搭建了两次qt opencv vs ,经常出现程序运行异常.找了几个原因如下: 1.opencv的路径未配置或配置有误. 2.qt中pro文件包含不正确. 3.测试opencv程序不正确.如视频或图片 ...

  3. 用SugarORM快速开发需要同步和保存大量数据的Android互联网客户端

    最近开发的一个项目主要有两个特点,这两点也是在项目开发前需要着重去规划解决方案的: 需要和Rest服务端请求大量的数据 同时这些数据本地也要保存到sqlite数据库 对于第一点,目前的Volley.G ...

  4. 【MPI0】学习资料搜集

    一个不错的英文的MPI教程:http://mpitutorial.com 中科大的MPI学习资料:http://micro.ustc.edu.cn/Linux/MPI/ 清华大学的并行计算资料:htt ...

  5. 【android】实现一个自己的标题栏

    完整项目下载 背景:项目中使用标题栏,只是简单的include一个标题栏的视图,赋值.控制元素显示.点击事件都要自己搞,不优雅! 要求: 1:对现有代码入侵最小 2:使用足够简单 OK,围绕着这个需求 ...

  6. 如何编写Iveely搜索引擎插件

    如果一个搜索引擎仅仅是网页搜索,那么将会是非常枯燥的,也不能根据业务需求扩展,还好Iveely在设计之初,就考虑了扩展性,预留插件功能,在不关闭服务或者停用服务的情况下,可以随时启用新插件或者禁用. ...

  7. I belonged to you

    小葫芦,你就像山间清爽的风,犹如古城温暖的光,在我的旅途中陪伴着我. 我想牵着你的手,踏遍万水千山,赏遍美景风光,春观夜樱,夏望繁星,秋赏满月,冬会初雪. 直到两鬓斑白,一起坐在火炉旁,给孩子们讲故事 ...

  8. 【BZOJ1006】【HNOI2008】神奇的国度(弦图染色)

    1006: [HNOI2008]神奇的国度 Time Limit: 20 Sec  Memory Limit: 162 MBSubmit: 1467  Solved: 603[Submit][Stat ...

  9. android之显示数据库信息

    关键字 ListView adapter MVC 在android开发中也使用到了MVC架构,其中的xml布局文件就是V,M就是我们定义好的javabean类,而控制器就是就是适配器类adapter ...

  10. centos 6.5下安装mysql+nginx+redmine 3.1.0 笔记

    centos 6.5下安装mysql+nginx+redmine 3.1.0 笔记 目录[-] 过程 1.安装RVM 2.利用rvm安装 Ruby 1.9.3 并设为默认 3.安装rails 4.安装 ...