利用C#访问注册表获取软件的安装路径

2023-05-16

绝大多数软件,基本上都会在注册表中记录自己的名字和安装路径信息。

在注册表中记录这些信息的位置是:

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths

因此,我们只要能访问到注册表的这个位置,就可以获取到某些软件的名称和安装路径信息。

 

本博文使用C#访问注册表获取软件的安装路径并进行显示。

1 示例程序主画面说明

示例程序主画面如下图所示。

 

在画面中的文本框中输入可执行程序的名称,点击“获取路径”按钮,便会在画面中的下一行(“获取路径”按钮所在行的下一行)显示出该程序完整的安装路径信息。这里输入的可执行文件名称必须是程序在注册表中的名称,如Adobe Reader在注册表中的名称为“AcroRd32.exe”。

 

2 示例程序完整代码

using System;
using System.Windows.Forms;
using Microsoft.Win32;
 
namespace GetSoftWarePathExp
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }
 
        private void button1_Click(object sender, EventArgs e)
        {
            try
            {
                string softName = textBox1.Text.ToString();
                string strKeyName = string.Empty;
                string softPath = @"SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths\";
                RegistryKey regKey = Registry.LocalMachine;
                RegistryKey regSubKey = regKey.OpenSubKey(softPath + softName + ".exe", false);
 
                object objResult = regSubKey.GetValue(strKeyName);
                RegistryValueKind regValueKind = regSubKey.GetValueKind(strKeyName);
                if (regValueKind == Microsoft.Win32.RegistryValueKind.String)
                {
                    this.label3.Text = objResult.ToString();
                }
            }
            catch
            {
                this.label3.Text = "朋友,获取程序路径失败!";
            }
        }
    }
}
注意:需要添加引用:using Microsoft.Win32;

3 代码说明

(1)代码“RegistryKey regKey = Registry.LocalMachine”使regKey 指向注册表主键HKEY_LOCAL_MACHINE。

(2)代码“RegistryKey regSubKey = regKey.OpenSubKey(softPath + softName + ".exe", false)”使regSubKey 指向我们需要查找的注册表子健。

(3)代码“object objResult = regSubKey.GetValue(strKeyName)”获取注册表的键值。

(4)代码“RegistryValueKind regValueKind = regSubKey.GetValueKind(strKeyName)”获取注册表的键值类型。

(5)最后输出获取到的键值信息。

(6)程序若出错,输出“朋友,获取程序路径失败!”的提示信息。

注意:RegistryKey.GetValue和RegistryKey.GetValueKind方法均需要传入一个参数指示要检索的值的名称,当传递给RegistryKey.GetValue和RegistryKey.GetValueKind方法的参数为一个空字符串时,则检索的是一个未命名的值,在注册表编辑器中显示此未命名的值时,将显示字符串“(Default)”,而不是显示一个名称。在本例中,传入的就是一个空字符串,若以检索软件Adobe Reader的安装信息为例,则获取的是下图中的第一条注册表信息,此时名称项显示字符串“(默认)”。

 

 

4 程序运行结果

(1)获取Adobe Reader的安装路径

输入“AcroRd32”,点击“获取路径”,得到以下结果,是不是和注册表中记录的信息一致啊。

 

(2)获取chrome的安装路径

输入“chrome”,点击“获取路径”,得到以下结果,是不是和注册表中记录的信息一致啊。

 

 

多说两句

在开发中,有时会指定特定程序来执行某类操作,这时可能会涉及读取注册表信息来打开程序。只是有些程序可能不存在这样的注册信息,这时,我们就必须采取其他方式了。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

利用C#访问注册表获取软件的安装路径 的相关文章

  • Instant App 常见问题官方指南 | Android 开发者 FAQ Vol.6

    链接
  • 解决fastboot flash system system.img FAILED:data too large

    fastboot flash system system img FAILED xff1a data too large 出现该问题的原因是因为adb的版本过低导致 xff0c 升级adb版本到最新即可
  • Windows Powershell和Windows Terminal的区别

    Windows Poweshell xff08 维基百科 xff09 PowerShell xff08 包括Windows PowerShell和PowerShell Core xff09 是微软公司开发的任务自动化和配置管理框架 UNIX
  • 服务器各种网络端口80 8080 8084处于 CLOSE_WAIT状态

    原因 xff1a 直接打开了NGINX xff0c 没有通过systemctl 测试NGINX服务器的时候 xff0c 直接在 bin 下打开了nginx服务
  • C++从头捡起——2. 零散的知识

    文章目录 0 判断一个数是否等于01 typename和using2 从txt文本里读取自定义的struct变量3 STL的vector xff08 及string xff09 3 1 输出vector的内容3 2 csv文件读成vecto
  • mac m1芯片 goland不能使用debug的问题,搞了四小时终于成功了

    关键点 xff1a 使用的go版本不对 应该使用下图中版本 xff08 之前可能使用的第二个版本 xff0c 看到是 pkg文件就没详细看区别直接安装了 xff09 其他问题 xff1a 1 使用goland 2020 3 4都不能成功 x
  • Java面试总结(2021优化版)发布&1024程序员节

    文章目录 Java面试总结 xff08 2021优化版 xff09 文章汇总关于公众号1024程序员节 Java面试总结 xff08 2021优化版 xff09 文章汇总 Java面试总结 xff08 2021优化版 xff09 针对读者反
  • 如何阅读程序源代码?

    文章目录 1 我为什么阅读源码2 阅读源码的好处3 阅读源码的困难4 阅读源码的步骤5 阅读源码的方法 1 我为什么阅读源码 我开始阅读源码是在进行互联网开发的第八九个年头 在此之前 xff0c 我做过校园网站 xff0c 接过网站开发的私
  • 企业级spring-boot案例-Spring Boot 启动时的运行方法

    文章目录 为什么我们需要在 spring boot 启动时运行代码 xff1f spring boot中启动后不同的运行方式1 使用CommandLineRunner接口实现 CommandLineRunner 接口的示例创建 Comman
  • 企业级spring-boot案例-Spring事件发布与监听

    文章目录 事件机制重要概念简介Spring 事件Spring 事件核心接口或类Spring 事件机制设计类图Spring 事件执行流程Spring 相关事件Spring 内置事件Spring Boot 内置事件 自定义事件注解驱动异步事件
  • 企业级spring-boot案例-自定义Spring Boot Starter

    文章目录 1 未使用Spring Boot Starter前的情况2 Spring Boot Starter简介2 1 什么是Spring Boot Starter xff08 启动器 xff09 2 2 Starter 模块整体结构2 3
  • 企业级spring-boot案例-Spring Boot 上传文件(图片)

    文章目录 1 添加依赖2 Spring配置3 添加Knife4j配置类4 添加枚举与实体类4 1 响应编码枚举4 2 上传文件信息4 3 统一返回前端的响应对象 5 文件上传接口与实现类5 1 文件上传接口5 2 文件上传接口实现类 6 初
  • Docker安装ElasticSearch和Kibana

    文章目录 1 安装docker2 拉取elasticsearch镜像3 启动elasticsearch3 1 目录结构 4 验证elasticsearch是否启动成功5 插件安装5 1 安装IK分词器5 2 分词器使用验证 6 kibana
  • IDEA远程调试Java代码

    文章目录 1 前言2 远程 Debug 调试原理2 1 理论基础2 2 远程调试分类 3 主动连接调试3 1 远程服务中开启 Debug 服务3 1 1 对于 SpringBoot3 1 2 对于 Tomcat 3 2 IDEA 中指定 D
  • Java 8 的异步编程利器 CompletableFuture 详解

    文章目录 一个例子回顾 Future一个例子走进CompletableFutureCompletableFuture使用场景创建异步任务supplyAsync方法runAsync方法 任务异步回调1 thenRun thenRunAsync
  • C语言头文件组织与包含原则

    文章目录 0 说明1 头文件作用2 头文件组织原则3 头文件包含原则4 代码文件组织原则5 注解题外话 转载自博客园 C语言头文件组织与包含原则 0 说明 本文假定读者已具备基本的C编译知识 如非特殊说明 xff0c 文中 源文件 指 c文
  • Spring 事件发布监听源码解析

    文章目录 初始化事件发布器流程注册事件监听器流程容器事件发布流程总结 Spring 事件监听机制离不开容器 IOC 特性提供的支持 xff0c 比如容器会自动创建事件发布器 xff0c 自动识别用户注册的监听器并进行管理 xff0c 在特定
  • 常见分布式ID生成方案

    文章目录 一 为什么要用分布式ID1 什么是分布式ID2 那么分布式ID需要满足哪些条件 二 分布式ID有哪些生成方式1 基于UUID2 基于数据库自增ID3 基于数据库集群模式4 基于数据库的号段模式5 基于Redis模式6 基于雪花算法
  • 【思维升级】这几个学习方法,打破你的思维惯性,带你走向高效人生

    文章目录 A 如何做好计划1 如何做好长期计划和总结 xff1f 2 如何做好日计划 xff1a 待办日程清单 xff0c 工作从容不迫的武器 B 如何让学习更有效率1 极其功利的少读书2 极其功利的配置资源3 不要从第一页开始读书4 学习
  • 写着简单跑得又快的数据库语言 SPL

    文章目录 数据库语言的目标SQL为什么不行SPL为什么能行游离记录有序性离散性与集合化分组理解聚合理解有序支持的高性能 SPL资料 数据库语言的目标 要说清这个目标 xff0c 先要理解数据库是做什么的 数据库这个软件 xff0c 名字中有

随机推荐

  • 怎样提高报表呈现的性能

    文章目录 报表性能问题出在什么环节 xff1f 数据准备的问题和优化数据传输的问题和优化其他环节的问题和优化报表内计算和呈现 大报表总结润乾报表资料 报表的性能很重要 xff0c 是一个总被谈及的问题 xff0c 跑的慢的报表用户体验恶劣
  • 高考的意义是什么

    文章目录 创立 xff1a 率世界之先 xff0c 开启大学全国统一考试之路重启 xff1a 担公平之义 xff0c 全面打开人才进阶通道奋进 xff1a 选栋梁之才 xff0c 积蓄国家发展能量探索 xff1a 掀改革之潮 xff0c 坚
  • 自定义Maven Archetype模板工程

    文章目录 Maven Archetype介绍什么是Maven Archetype为什么要有模板工程创建模板工程的三种方式 常用的archetypemaven archetype quickstartmaven archetype webap
  • 全文搜索引擎 ElasticSearch 还是 Solr?

    文章目录 什么是全文搜索为什么要用全文搜索搜索引擎Lucene xff0c Solr xff0c ElasticSearch xff1f LuceneSolrElasticSearch Elasticsearch vs Solr的选择历史比
  • 正面管教-读书笔记

    正面管教 读书笔记 文章目录 正面管教 读书笔记正面管教 价值正面管教 作者简介正面管教 正文一 什么是正面管教不同的教养方式是什么在起作用 xff1f 和善与坚定并行 二 为什么要使用正面管教一 阿德勒的基本概念二 赢得 孩子三 赢得合作
  • 内存数据库如何发挥内存优势?

    文章目录 指针式复用外键预关联序号定位集群维表备胎式容错回顾与总结SPL资料 与以磁盘存储为主的普通数据库相比 xff0c 内存数据库的数据访问速度可以高出几个数量级 xff0c 能大幅提高运算性能 xff0c 更适合高并发 低延时的业务场
  • git rm工作区文件删除后撤销

    文章目录 1 现象描述2 解决3 add了多余的文件需要从add中删除4 commit中撤销文件4 1 查看commit的内容4 2 撤销commit里的一部分内容 1 现象描述 今天add文件的时候 xff0c 不小心把一个不需要提交的也
  • 如何建立自己的认知体系

    文章目录 什么是以及为什么要搭建知识体系如何建立知识体系 什么是元认知 什么是程序类知识 什么是概念类知识 什么是事实类知识 搭建知识过程中的注意事项1 无用之用是为大用2 让知识间建立关系 xff0c 切记一定不要孤立3 寻找一切现象 x
  • 【springboot系列】springboot整合guava实现本地缓存

    概述 Guava Cache 是 Google 开源的一套开发工具集合 xff0c Guava Cache 是其中的一个专门用于处理本地缓存的轻量级框架 xff0c 是全内存方式的本地缓存 xff0c 而且是线程安全的 和 Concurre
  • 解决Windows莫名其妙地从休眠状态唤醒的问题

    因为经常写代码开很多个工作区 xff0c 电脑经常就是合盖休眠 xff0c 这样打开就能用 xff0c 但是总是在我不经意的时候发现电脑风扇在狂转 xff0c 不知道是哪个应用又在qj我的电源管理计划 xff0c 今天午休发现电脑风扇狂转
  • Ubunt装机后的必要设置及必备软件

    1 为 Ubuntu Dock 启用 Minimize on Click Ubuntu Dock xff08 位于屏幕左侧的任务栏 xff09 可以轻松打开 xff0c 并且切换和管理应用程序与正在运行的应用程序 你可以点击 Dock 中的
  • No toolchains found in the NDK toolchains folder for ABI with prefix: mips64el-linux-android 解决方法

    在ndk版本升级之后 xff0c 项目编译出现了问题 xff0c 提示没有对应的编译工具链 xff0c 目前最多的做法是 xff0c 下载之前的ndk版本 xff0c 然后再拷贝缺少的部分 这种做法确实可以解决问题 xff0c 但是既然新版
  • 来自一个前端大神转产品经理后的聊天感悟

    给的学习建议 xff1a 1 推荐给我一本书 锋利的jQuery 2 学会使用思维导图工具 3 课余时间学习理财 4 研发过程中 xff0c 多多留心一些交互 xff0c 自己完善反复琢磨自己的思路 xff08 保证是最简的 xff09 5
  • 08丨案例:编写最简单的性能脚本

    通常我们会遇到要手写脚本的时候 xff0c 就要针对一些接口编写脚本 这时候 xff0c 我们需要知道接口规范和后台的数据是什么 而有些性能测试工程师写脚本时 xff0c 并不知道后端的逻辑 xff0c 只知道实现脚本 xff0c 事实上
  • KindEditor图片上传相关问题 (转)

    size 61 x large 从众多的Web编辑器中选择KindEditor xff0c 主要是看重它的小巧 一个JS文件 两个CSS文件和一个GIF图片就是它的全部 所以在页面上的加载速度很快 xff0c 而且功能也相对齐全 目前Kin
  • hexo+Ubuntu+github搭建个人博客(详细)

    菜鸟初步搭建须知 xff08 是我没错 xff0c 备忘 xff09 相应知识 会一些基本的Linux命令和vim的操作命令 可以在实验楼上入门学习网上已经浏览了 官方文档安装ubuntu和git xff08 因为最近在学习用ubuntu
  • Dispatcher.BeginInvoke()方法使用不当导致UI界面卡死的原因分析

    前段时间 xff0c 公司同事开发了一个小工具 xff0c 在工具执行过程中 xff0c UI 界面一直处于卡死状态 通过阅读代码发现 xff0c 主要是由于 Dispatcher BeginInvoke 方法使用不当导致的 本文将通过一个
  • macos可以识别U盘但看不到U盘里的文件

    文章目录 1 问题描述2 解决 1 问题描述 以前U盘插上都可以直接操作的 xff0c 但是突然就不行了 可以看到 xff0c 我这个U盘是FAT32的格式网上有些说mac不可以直接读取fat32或者ntfs格式的文件 xff0c 或者说可
  • List的Clear方法与RemoveAll方法用法小结

    示例代码 using System using System Collections Generic namespace ListClearExp class Program static void Main string args Lis
  • 利用C#访问注册表获取软件的安装路径

    绝大多数软件 xff0c 基本上都会在注册表中记录自己的名字和安装路径信息 在注册表中记录这些信息的位置是 xff1a HKEY LOCAL MACHINE SOFTWARE Microsoft Windows CurrentVersion