C#实现在注册表中保存信息
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 }

最后,上一张修改后的注册表截图:
C#实现在注册表中保存信息的更多相关文章
- java如何操作注册表(Preferences类)(在windows的注册表中保存、读取)
我们经常需要将我们的程序运行中的一些信息(比如在选项对话框中的设置)记录下来,以做便再次运行的时候不用再重写填写这些数据.这对改善软件的人机可用性方面是很有用的.比如:数据库监控.日志工具,JDBMo ...
- C# 如何判断ie版本号和获取注册表中的信息
1.获取ie版本号 string ver = (new WebBrowser()).Version.ToString(); 例如:11.0.10586.103 int mainVer = (new W ...
- usb由于其配置信息(注册表中的)不完整或已损坏,Windows 无法启动这个硬件设备
在设备管理器的usb设备的属性中,显示提示“由于其配置信息(注册表中的)不完整或已损坏,Windows 无法启动这个硬件设备”.注册表坏了.经过查询,解决方法如下: 方法:打开注册表编辑器(开始--& ...
- 如何完全卸载oracle和删除oracle在注册表中的注册信息
卸载步骤介绍 1.停止所有Oracle相关的服务 操作方法: 控制面板-->管理工具 -->服务 -->将所有oracle开头的服务均停止 2.卸载Oracle 10g数据库服务器组 ...
- 在注册表中查看Windows10系统激活密钥的方法
1 2 3 4 5 6 7 分步阅读 百度经验:jingyan.baidu.com 激活Windows10系统(非自己使用激活密钥激活的系统)以后,我们不一定清楚激活密钥是什么.如果想查看自己电脑 ...
- 用python库openpyxl操作excel,从源excel表中提取信息复制到目标excel表中
现代生活中,我们很难不与excel表打交道,excel表有着易学易用的优点,只是当表中数据量很大,我们又需要从其他表册中复制粘贴一些数据(比如身份证号)的时候,我们会越来越倦怠,毕竟我们不是机器,没法 ...
- 在注册表中无Python3.5安装路径的情况下安装pywin32-
当安装pywin32出现Python Version 3.5 required which was not found in the registry的时候表面注册表中没有Python3.5的安装路径 ...
- UAC在注册表中的对应位置
UAC在注册表中的对应位置 HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Windows/CurrentVersion/Policies/System 相关键值设置: U ...
- NSIS:在注册表中记录安装路径以便重装或升级时读取
原文 NSIS:在注册表中记录安装路径以便重装或升级时读取 在NSIS中,这个功能是非常有用的,可以避免用户把程序安装到多个位置的尴尬. 第1步:在“安装目录选择页面”前面加入以下代码: 1 !def ...
随机推荐
- Python3基础 file open 打开txt文件并打印出全文
Python : 3.7.0 OS : Ubuntu 18.04.1 LTS IDE : PyCharm 2018.2.4 Conda ...
- Linux 操作 mysql
linux mysql 操作命令 [转 来源] 1.linux下启动mysql的命令:mysqladmin start/ect/init.d/mysql start (前面为mysql的安装路径) 2 ...
- 发现 一个 http 压测库
代码库:https://github.com/wg/wrk 安装 https://github.com/wg/wrk
- hdu 2795 Billboard 线段树+二分
Billboard Time Limit: 20000/8000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Probl ...
- 升级php7一些需要注意的地方
1.升级过程涉及代码的主要处理的就是几个扩展(mysql.mssql .mcrypt.ereg)使用到的一些废弃函数(call_user_method.call_user_method_array等) ...
- Ubuntu更新软件源出现GPG error
原因 在sources.list文件中加入了非ubuntu官方源,所以认为加入源是不可信任的. 解决方法导入该源公钥.E084DAB9为PUBKEY后八位 gpg --keyserver keyser ...
- Error updating database. Cause: com.mysql.jdbc.MysqlDataTruncation: Data truncation: Truncated incorrect DOUBLE value: 'as3'
执行更新时的出错信息 Whitelabel Error Page This application has no explicit mapping for /error, so you are see ...
- 899F - Letters Removing
Codeforces 899F - Letters Removing 思路:考虑一下怎么找到输入的l和r在原来串中的位置,我们想到用前缀和来找,一开始所有位置都为1,删掉后为0,那么前缀和为l的位置就 ...
- C#实现在应用程序间发送消息的方法示例
本文实例讲述了C#实现在应用程序间发送消息的方法.分享给大家供大家参考,具体如下: 首先建立两个C#应用程序项目. 第一个项目包含一个Windows Form(Form1),在Form1上有一个But ...
- ViewPager 如何得到当前的Fragment (使用FragmentPagerAdapter)
使用FragmentPagerAdapter时,难免要在MainActivity 和 当前显示的Fragment间传递数据.但是FragmentPagerAdapter并没有给我们提供类似getCur ...