某些程序必须依赖指定运行环境。那么读取注册表来判断此电脑是否有执行环境是个很不错的办法。因为每个软件安装之后都会在注册表中注册对应的键值,并且有些键值是独一无二的。那么首先就需要找到那个具体的独一无二的键值,以便程序在运行之前能够去读取以判断。代码如下:

class Program{private static string _sValue = string.Empty;static void Main(string[] args){Console.WriteLine("请输入待查找值:");_sValue = Console.ReadLine();Console.WriteLine($"正在查询。。。");var registryKey = RegistryKey.OpenBaseKey(RegistryHive.LocalMachine,Environment.Is64BitOperatingSystem ? RegistryView.Registry64 : RegistryView.Registry32); //判断机器位数int i = 0;GetKeyNames(registryKey, ref i);Console.WriteLine($"查询结束。。。");Console.ReadKey();}/// <summary>/// 遍历所有子项/// </summary>/// <param name="subkey">节点</param>/// <param name="i"></param>private static void GetKeyNames(RegistryKey subkey, ref int i){foreach (var subkey_name in subkey.GetSubKeyNames()) // 检索包含所有子项名称的字符串数组{try{using (RegistryKey csubkey = subkey.OpenSubKey(subkey_name)){GetValueName(csubkey, ref i);GetKeyNames(csubkey, ref i);}}catch { }}}/// <summary>/// 若包含输入值则输出记录/// </summary>/// <param name="subkey">节点</param>/// <param name="i"></param>private static void GetValueName(RegistryKey subkey, ref int i){foreach (var name in subkey.GetValueNames()) //检索包含与此项关联的所有值名称的字符串数组{var sValue = subkey.GetValue(name) + string.Empty;if (string.Compare(sValue, string.Format(@"{0}", _sValue, StringComparison.OrdinalIgnoreCase)) == 0){Console.WriteLine(++i + "\t" + subkey.Name);}}}}

现在查找含有E:\ArcGIS\Python27\ArcGISx6410.2\python.exe的键:

结果如下:

C#获取注册表指定键值相关推荐

  1. java读取注册表_Java通过CMD方式读取注册表任意键值对代码实践

    需要读取如图所示注册表[HKEY_LOCAL_MACHINE\SOFTWARE\EasyDrv7]节点下的[DateTime]的值 直接上代码: package com.beibei.common.u ...

  2. 注册表各键值保存的内容及其对用的作用(功能)(不完善,有补充的评论指出供大家学习参考)

    从Windows 95开始,Microsoft在Windows中引入了注册表(英文为REGISTRY)的概念(实际上原来在Windows NT中已有此概念).注册表是Windows 95及Window ...

  3. # 删除注册表项键值_强制删除:让你的电脑上不再有“顽固”程序

    微信搜一搜麦克NO1对于很多用户来说,在日常使用电脑的时候,经常会有意无意的安装一些程序.而这些程序也是严重影响了电脑的运行速度.所以,在忍无可忍的情况下,需要将这些"顽固"程序卸 ...

  4. [C++]用VC++来设置获得注册表的键值(问题解决)

    下面这个是基于MFC的基本对话写的..  演示设置注册表的3中类型的值和获得注册表的3中类型的值.. 分别用RegSetValueEx()来设置,RegQueryValueEx()函数来获得. voi ...

  5. js读取注册表的键值

    try { var shell = new ActiveXObject("WScript.Shell"); --读取注册表 var  key  = shell.RegRead(&q ...

  6. windows注册表几大键值

    什么是注册表?  从Windows 95开始,Microsoft在Windows中引入了注册表(英文为REGISTRY)的概念(实际上原来在Windows NT中已有此概念).注册表是Windows ...

  7. 批量删除注册表特定键值的小技巧

    今天使用虚拟机的时候发现了一个小的问题,我的ubunto需要使用18.04,但是我用的虚拟机是版本12的,不能正常加载,但是在别人的电脑上就能成功,看他们的版本是15.0的所以我也想吧我的虚拟机升级到 ...

  8. java获取mysql表的主键_Spring中获取数据库表主键序列

    在程序开发中,我们经常有写数据库表的操作,数据表中经常带有主键自增序列,如何获取自增序列.spring中提供了相应的类 DataFieldMaxValueIncrementer. DataFieldM ...

  9. MyBatis映射文件1(增删改、insert获取自增主键值)

    增删改 Mybatis为我们提供了<insert>.<update>.<delete>标签来对应增删改操作 在接口中写增删改的抽象方法 void addEmp(Em ...

最新文章

  1. 【Android游戏开发十五】关于Android 游戏开发中 OnTouchEvent() 触屏事件的性能优化笔记! .
  2. OpenCASCADE绘制测试线束:OCAF 命令之标准演示命令
  3. 深度对比Python的3种“字符串格式化”方法,看看你喜欢哪一种?
  4. HOOK -- IAT HOOK 本进程MessageBox
  5. 创建表头固定,表体可滚动的GridView(转)
  6. 译 | .NET Core 基础架构进化之路(二)
  7. 排行榜上用C++写局域网聊天程序
  8. 机器学习重大挑战:坏数据和坏算法正在毁掉你的项目
  9. linux 系统显示很大,在Linux中可视化显示内存占用情况的方法
  10. 工作日志20150202
  11. 点击某些按钮不要触发验证控件
  12. python中的加减乘除符号属于什么_python中的加减乘除小知识
  13. 免疫算法的c语言,免疫算法(IA)
  14. 陕西网络培训学院自动学习简易脚本
  15. Elasticsearch常用搜索和分词器
  16. Grounded video description
  17. 网络广告中,CPC、CPA、CPM 的定义各是怎样的?
  18. (1)统一流程管理平台--前言
  19. 信任=自信+他信+信他
  20. 外星人安装MSDN原版系统一键还原Alienware OEM logo

热门文章

  1. matlab 计算指北角,运筹学及MATlab编程.doc
  2. 随机过程及应用(一) - 特征函数
  3. 期末试题及答案计算机,《计算机应用基础》期末试题及答案
  4. Java项目-博客管理系统介绍
  5. python爬取携程机票并发送过滤后的机票信息到指定邮箱
  6. Windows补丁查找及安装
  7. 基于复杂网络理论的计算机网络拓补分析,基于复杂网络理论的计算机网络拓扑分析论文.doc...
  8. sqlhelper 的使用 (C#)超级详细的入门教程
  9. 传输线理论之相速、相位等的概念
  10. Redis 持久化 RDB/AOF 详解与实践