C#实现在注册表中保存信息

最近做的项目需要在注册表中记录一些用户设置,方便在程序下次启动时读取设置,应用上次用户保存的设置,挺简单的。

写出来,方便记忆,以后要用,可以直接改改就能用。

 1 using System;
2
3 namespace Backend
4 {
5 public class RegistryStorage
6 {
7 public static PageVisibility OpenAfterStart()
8 {
9 Microsoft.Win32.RegistryKey registryKey;
10 PageVisibility visibility = PageVisibility.Visible;
11
12 // HKCU\Software\RegeditStorage
13 registryKey = Microsoft.Win32.Registry.CurrentUser.OpenSubKey(@"Software\RegistryStorage");
14 if (registryKey != null)
15 {
16 visibility = (string)registryKey.GetValue("PageVisibility") == PageVisibility.Hide.ToString() ?
17 PageVisibility.Hide : PageVisibility.Visible;
18 registryKey.Close();
19 }
20
21 return visibility;
22 }
23
24 public static void SaveBeforeExit(PageVisibility visibility)
25 {
26 Microsoft.Win32.RegistryKey registryKey;
27
28 // HKCU\Software\RegeditStorage
29 registryKey = Microsoft.Win32.Registry.CurrentUser.CreateSubKey(@"Software\RegistryStorage");
30 registryKey.SetValue("PageVisibility", visibility.ToString());
31 registryKey.Close();
32 }
33 }
34
35 public enum PageVisibility
36 {
37 Visible,
38 Hide
39 }
40 }

代码很容易理解,下面添加一点代码来测试一下。

 1 using System;
2 using System.Diagnostics;
3
4 namespace Backend.Test
5 {
6 class Program
7 {
8 static void Main(string[] args)
9 {
10 // 存值
11 RegistryStorage.SaveBeforeExit(PageVisibility.Hide);
12 // 取值
13 PageVisibility visibility = RegistryStorage.OpenAfterStart();
14 // 验证
15 Debug.Assert(visibility == PageVisibility.Hide);
16
17
18 // 存值
19 RegistryStorage.SaveBeforeExit(PageVisibility.Visible);
20 // 取值
21 visibility = RegistryStorage.OpenAfterStart();
22 // 验证
23 Debug.Assert(visibility == PageVisibility.Visible);
24
25 Console.WriteLine("Press any key to exit.");
26 Console.ReadKey();
27 }
28 }
29 }

最后,上一张修改后的注册表截图:

版权归博客园和作者共有。.NET类库源码参考 扣丁格鲁 www.projky.com,转载请注明出处。

C#实现在注册表中保存信息的更多相关文章

  1. java如何操作注册表(Preferences类)(在windows的注册表中保存、读取)

    我们经常需要将我们的程序运行中的一些信息(比如在选项对话框中的设置)记录下来,以做便再次运行的时候不用再重写填写这些数据.这对改善软件的人机可用性方面是很有用的.比如:数据库监控.日志工具,JDBMo ...

  2. C# 如何判断ie版本号和获取注册表中的信息

    1.获取ie版本号 string ver = (new WebBrowser()).Version.ToString(); 例如:11.0.10586.103 int mainVer = (new W ...

  3. usb由于其配置信息(注册表中的)不完整或已损坏,Windows 无法启动这个硬件设备

    在设备管理器的usb设备的属性中,显示提示“由于其配置信息(注册表中的)不完整或已损坏,Windows 无法启动这个硬件设备”.注册表坏了.经过查询,解决方法如下: 方法:打开注册表编辑器(开始--& ...

  4. 如何完全卸载oracle和删除oracle在注册表中的注册信息

    卸载步骤介绍 1.停止所有Oracle相关的服务 操作方法: 控制面板-->管理工具 -->服务 -->将所有oracle开头的服务均停止 2.卸载Oracle 10g数据库服务器组 ...

  5. 在注册表中查看Windows10系统激活密钥的方法

      1 2 3 4 5 6 7 分步阅读 百度经验:jingyan.baidu.com 激活Windows10系统(非自己使用激活密钥激活的系统)以后,我们不一定清楚激活密钥是什么.如果想查看自己电脑 ...

  6. 用python库openpyxl操作excel,从源excel表中提取信息复制到目标excel表中

    现代生活中,我们很难不与excel表打交道,excel表有着易学易用的优点,只是当表中数据量很大,我们又需要从其他表册中复制粘贴一些数据(比如身份证号)的时候,我们会越来越倦怠,毕竟我们不是机器,没法 ...

  7. 在注册表中无Python3.5安装路径的情况下安装pywin32-

    当安装pywin32出现Python Version 3.5 required which was not found in the registry的时候表面注册表中没有Python3.5的安装路径 ...

  8. UAC在注册表中的对应位置

    UAC在注册表中的对应位置 HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Windows/CurrentVersion/Policies/System 相关键值设置: U ...

  9. NSIS:在注册表中记录安装路径以便重装或升级时读取

    原文 NSIS:在注册表中记录安装路径以便重装或升级时读取 在NSIS中,这个功能是非常有用的,可以避免用户把程序安装到多个位置的尴尬. 第1步:在“安装目录选择页面”前面加入以下代码: 1 !def ...

随机推荐

  1. 什么是BFC?

    转载自知乎:https://zhuanlan.zhihu.com/p/25321647 一.常见定位方案 在讲 BFC 之前,我们先来了解一下常见的定位方案,定位方案是控制元素的布局,有三种常见方案: ...

  2. Git 基础 —— 常见使用场景

    Git 基础学习系列 Git 基础 -- 安装 配置 别名 对象 Git 基础 -- 常用命令 Git 基础 -- 常见使用场景 Git基础 -- Github 的使用 突然插入 Bugifx 工作, ...

  3. HDU 6171 Admiral(双向BFS+队列)题解

    思路: 最大步骤有20,直接BFS会超时. 因为知道开始情况和结果所以可以用双向BFS,每个BFS规定最大步骤为10,这样相加肯定小于20.这里要保存每个状态搜索到的最小步骤,用Hash储存.当发现现 ...

  4. 对某项目中Vuex用法的分析

    上周五刚发布一个线上版本,趁着新的需求和bug还没到来,决定分析一下正在维护的一个使用Vue 2.0 开发的后台管理系统中Vuex部分代码.这部分代码不是我写的,加上我一直在“使用”现成的而不是“搭建 ...

  5. 《EMCAScript6入门》读书笔记——22.Module的语法

  6. 【TCP/IP详解 卷一:协议】第十九章 TCP的交互数据流

    19.1 引言 前一章我们介绍了TCP连接的建立与释放:三握四挥,以及状态转移图. TCP报文段分为:交互数据,以及成块数据(下一章介绍). 交互数据:例如telnet,ssh,这种类型的协议在大多数 ...

  7. codeforces 350 div2 D Magic Powder - 2 二分

    D2. Magic Powder - 2 time limit per test 1 second memory limit per test 256 megabytes input standard ...

  8. python tar 压缩解压

    压缩: 1. import tarfile import os def tar(fname): t = tarfile.open(fname + ".tar.gz", " ...

  9. python input输入元素相加

    sum= number= while True: : break number=int(input('数字0为结束程序,请输入数字: ')) sum+=number print('目前累加的结果为: ...

  10. django字段查询参数及聚合函数

    字段查询是指如何指定SQL WHERE子句的内容.它们用作QuerySet的filter(), exclude()和get()方法的关键字参数. 默认查找类型为exact. 下表列出了所有的字段查询参 ...