需求

碰到一个需求,要获取电脑上安装软件的安装路径或者卸载路径,
在网上找了一圈,基本都是通过注册表查找计算机\HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths\ 这个项,然后根据应用名,后加后缀“.exe”来取得这个exe文件的路径,但是这就有一个问题,有部分软件无法通过这个来找到,比如说超图(SuperMap),程序已经在电脑上装上了,可是在对应的注册表项里面找不到。

思路

这时我就想到,通过卸载项来找到文件的安装路径。\HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\ 因为大部分软件都是可卸载的,所以一定能在这里找到。
果然,在这一堆乱码的项中,找到了我们需要的项,并且也有安装路径和安装源文件的路径。

方法

public static string GetSoftWarePath(string Name){string softName = Name.ToLower();string softPath = "兄弟,你好像没有安装这个软件";string softKeyPath = @"SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\";RegistryKey key = Registry.LocalMachine.OpenSubKey(softKeyPath, false);if (key != null)//判断对象存在 {foreach (string keyName in key.GetSubKeyNames())//遍历子项名称的字符串数组 {RegistryKey key2 = key.OpenSubKey(keyName, false);//遍历子项节点 if (key2 != null){if (key2.GetValue("DisplayName", "").ToString().ToLower().Contains(softName)){if (key2.GetValue("InstallLocation", "").ToString() is ""){softPath = key2.GetValue("InstallSource", "").ToString();//获取安装文件的路径 }else{softPath = key2.GetValue("InstallLocation", "").ToString();//获取安装路径 }}}}}return softPath;}

主程序测试一下:

class Program{static void Main(string[] args){string name = "SuperMap";string softPath = GetSoftWarePath(name);Console.WriteLine("name:" + name + "\r\n" + "path:" + softPath);Console.ReadKey();}

测试结果:


可以看到,这里可以正确的读取到超图的安装路径。

思考

经过几个简单的测试,发现了一个问题,这个方法对于部分应用来说,并不能很好的获取安装路径,这就让我百思不得其解

小弟才疏学浅,希望各位大佬能指点一二。

获取电脑软件的路径(C#)相关推荐

  1. 如何获取电脑软件图标和app图标

    如何获取电脑软件图标和app图标 大家在写博客或者作图的时候经常会需要找到电脑软件图标或者app图标,如果从网上找有的图标并不清楚, 今天给大家分享下,怎么快速的获取电脑软件图标和app图标,得到的图 ...

  2. Python获取Windows软件安装路径

    场景 在未知情况下, 获取Windows系统下用户的某个软件安装路径(我这里是:CST DESIGN ENVIRONMENT_AMD64.exe) 方法 通过Windows注册表获取软件安装路径 im ...

  3. 查看电脑软件安装路径

    步骤1:WIN(windows徽标)+R,打开CMD 步骤2:输入 where 软件名 举例:

  4. pyqt制作自动获取电脑IP地址的软件(含源代码)

    由于去离校较远的地方实习,平时想连接实验室的电脑,只要得到电脑的IP地址即可.但是由于电脑的不稳定性导致意外重启之后就得不到IP地址了.所以萌生了想制作一个可以发IP地址的小软件.最终的目的是不管电脑 ...

  5. 这5个电脑软件提高工作效率1000%,装机必备

    1.桌面日历 当我们工作之后,或者岁数大了之后,经常会忘记事情,这时候我们往往会通过记事本辅助我们记忆,写记事本的好处就是将需要做的事都列出来,让我们称之为[代办事项] 什么是[代办事项]:就是你把每 ...

  6. 电脑软件超时、MOCK测试方案

    大家好,我是谭叔. 今天,谭叔跟大家分享我在测试电脑软件(程序)时,模拟超时环境的N种尝试,以及电脑软件(程序)的MOCK测试方案. 超时环境 在日常测试工作中,弱网环境.超时请求等异常测试,是必不可 ...

  7. win10清理_大家都说Win10系统不用装360,那么如何清理电脑软件垃圾呢?

    电脑在我们的生活中经常用到,最近很多人都说,电脑装了Win10系统,就没必要再装360了,那么就有一个疑问,平时是如何清理电脑软件垃圾的呢? 对于这个问题,接下来就跟大家分享一下,如何优化电脑,让你的 ...

  8. python开发pc软件_程序员带你十天快速入门Python,玩转电脑软件开发(二)

    关注今日头条-做全栈攻城狮,学代码也要读书,爱全栈,更爱生活.提供程序员技术及生活指导干货. 如果你真想学习,请评论学过的每篇文章,记录学习的痕迹. 请把所有教程文章中所提及的代码,最少敲写三遍,达到 ...

  9. 正在搜索需要的文件_装机必备!分享4个电脑软件,3分钟搞定文件管理难题!...

    不知道你有没有出现下面这些情况: 想找一个文件,却不知道放在哪里了: 想到家里办公,却忘记拷贝文件: -- 其实,出现这些情况,可能是因为你没有做好文件管理工作. 而对于文件管理,需要进行以下四个步骤 ...

最新文章

  1. svn中出现红色感叹号
  2. php 表单录入,PHP 表单和用户输入
  3. 软件测试技术 homework2
  4. linux中写如空格参数,Vim中Tab与空格缩进
  5. 一步一步安装UEFI分区方式的windows 10 企业版
  6. python模块-time,datatime
  7. winform窗体MaximizeBox
  8. VC++如何计算一段代码的执行时间
  9. ubuntu 虚拟显示器制作
  10. 红帽Linux登录密码忘了,redhat linux忘记登陆密码之解决办法
  11. 基于matlab仿真的功率因数测定方法研究,基于MATLAB的单相全控整流电路功率因数测定.pdf...
  12. 《计算机网络 PDF》炸了!!!
  13. 绿联串口线linux驱动下载,绿联usb转串口驱动
  14. 文献(2): 综述_癌症相关成纤维细胞(CAF)的异质性【建议收藏】
  15. 媒体选择与发布实践总结
  16. 新媒体时代,内容为王已经走偏
  17. 利用python openpyxl库实现对多个excel工作簿的快速汇总
  18. 爬取Google Play中app的用户评论(1)
  19. 静雅学校有高中吗有计算机,涿州靖雅中学
  20. adf的主要功能之一是_ADF软件介绍

热门文章

  1. 经典例题:判断给定数组是否已经排好序
  2. 杀毒奇招:用安全网关消灭蠕虫病毒(转)
  3. APP - 支付宝怎么延时转账?能否撤回转账?
  4. KVM虚拟化常用API
  5. Google Play App Signing
  6. Oracle数据库初学者入门教程
  7. 一台计算机比1千克重还是轻,1千克有多重?它就要重新定义了
  8. python3电商平台论坛_2.电商平台零售数据分析
  9. 牛牛的DRB迷宫II
  10. lodop打印,仿超市小票,银行排队小票,超好用-jatoolsprinter