.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. Opencv step by step - 加载视频

    刚买了本 "学习Opencv" 这本书,慢慢看起来. 一开始就是加载视频了.当然了,首先你要有个视频 从这里下载了一个: tan@ubuntu:~$ wget http://www ...

  2. php mysqli扩展之预处理

    在前一篇 mysqli基础知识中谈到mysqli的安装及基础操作(主要是单条sql语句的查询操作),今天介绍的是mysqli中很重要的一个部分:预处理. 在mysqli操作中常常涉及到它的三个主要类: ...

  3. Orchard使用Tags(标签)组织文本

    本文链接:http://www.cnblogs.com/souther/p/4517476.html 主目录 原文链接:http://docs.orchardproject.net/Documenta ...

  4. 简单的音乐播放器(VS 2010 + Qt 4.8.5)

    昨天历经千辛万苦,配置好了VS 2010中的Qt环境(包括Qt for VS插件),今天决定浅浅地品味一下将两者结合进行编程的魅力. 上网查了一些资料,学习了一些基础知识,决定做一个简单的音乐播放器, ...

  5. Sql Server 附加没有日志文件的数据库(.mdf)文件方法

    附加数据库,附加的时候会提醒找不到log文件 针对以上现象有两个写法的语句能解决: 写法一: USE MASTER; EXEC sp_detach_db @dbname = 'TestDB'; EXE ...

  6. [BZOJ 1052][HAOI2007]覆盖问题(二分答案)

    题目:http://www.lydsy.com:808/JudgeOnline/problem.php?id=1052 分析: 挺有想法的一道题,先二分答案ans,主要是判断的问题. 首先可以弄出把所 ...

  7. [c#基础]集合foreach的必要条件和自定义集合

    引言 最近翻看了之前的学习笔记,看到foreach,记得当时老师讲的时候,有点犯浑,不是很明白,这好比,上小学时,你不会乘法口诀,但是随着时间的增长,你不自觉的都会了,也悟出个小道理,有些东西,你当时 ...

  8. AngularJS开发指南8:AngularJS模块的详解

    在讲angularjs的模块之前,我们先介绍一下angular的一些知识点: AngularJS是纯客户端技术,完全用Javascript编写的.它使用的是网页开发的常规技术(HTML,CSS,Jav ...

  9. javascript 漏洞

    1.javascript语言中,每一个对象都有一个对应的原型对象,称为prototype对象.  继承是基于原型的! 2.prototype对象的作用,就是定义所有实例对象共享的属性和方法! 3.“原 ...

  10. 小结-Splay

    参照陈竞潇学长的模板写的BZOJ 3188: #include<cstdio> #include<cstring> #include<algorithm> #def ...