.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. ajax中加上AntiForgeryToken防止CSRF攻击

    经常看到在项目中ajax post数据到服务器不加防伪标记,造成CSRF攻击 在Asp.net Mvc里加入防伪标记很简单在表单中加入Html.AntiForgeryToken()即可. Html.A ...

  2. linux内核分析 第八周

    第八周 理解进程调度时机跟踪分析进程调度与进程切换的过程 一.进程调度与切换 1.进程的调度时机与进程切换 操作系统原理中介绍了大量进程调度算法,这些算法从实现的角度看仅仅是从运行队列中选择一个新进程 ...

  3. 20135223/20135234/20135229小组——亚博 Arduino智能小车实践报告

    实验名称:Arduino智能小车组装和综合测试 实验小组成员:20135223何伟钦 20135234马启扬 20135229吕松鸿 实验日期:2015.10.27—2015.11.3 实验时长:24 ...

  4. 20145208 实验五 Java网络编程

    20145208 实验五 Java网络编程 实验内容 1.用书上的TCP代码,实现服务器与客户端. 2.客户端与服务器连接 3.客户端中输入明文,利用DES算法加密,DES的秘钥用RSA公钥密码中服务 ...

  5. PCA和LDA降维的比较

    PCA 主成分分析方法,LDA 线性判别分析方法,可以认为是有监督的数据降维.下面的代码分别实现了两种降维方式: print(__doc__) import matplotlib.pyplot as ...

  6. 移动APP为什么要开发两套Android和IOS-桥接模式

    一.前言 现在用H5开发个 web app 多么方便,兼容两大系统Andriod和IOS.但是为什么许多公司还要开发原生的APP?开发原生的APP就需要开发两套一套运行在Andriod系统的,一套运行 ...

  7. 父div高度和宽度的应用

    这是我自己在仿腾讯首页时遇到的布局问题,在此记录,如果有错,欢迎指正. 首先是对齐问题,可以把父div的高度设置为0,然后调整padding值,这样可以批量调整子div们和其他父div的相对高度. 这 ...

  8. UITextField实现左侧空出一定的边距

    就是通过uitextfield的leftview来实现的,同时要设置leftviewmode. 如果设置左右边距,需要再加上rightView功能 -(void)setTextFieldLeftPad ...

  9. Bootstrap3.0学习第二十五轮(JavaScript插件——折叠)

    详情请查看http://aehyok.com/Blog/Detail/31.html 个人网站地址:aehyok.com QQ 技术群号:206058845,验证码为:aehyok 本文文章链接:ht ...

  10. angular的工具方法笔记(equals, HashKey)

    分别是angular脏值检测的工具方法equals和 类HashKey的使用方法 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transi ...