获取电脑软件的路径(C#)
需求
碰到一个需求,要获取电脑上安装软件的安装路径或者卸载路径,
在网上找了一圈,基本都是通过注册表查找计算机\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#)相关推荐
- 如何获取电脑软件图标和app图标
如何获取电脑软件图标和app图标 大家在写博客或者作图的时候经常会需要找到电脑软件图标或者app图标,如果从网上找有的图标并不清楚, 今天给大家分享下,怎么快速的获取电脑软件图标和app图标,得到的图 ...
- Python获取Windows软件安装路径
场景 在未知情况下, 获取Windows系统下用户的某个软件安装路径(我这里是:CST DESIGN ENVIRONMENT_AMD64.exe) 方法 通过Windows注册表获取软件安装路径 im ...
- 查看电脑软件安装路径
步骤1:WIN(windows徽标)+R,打开CMD 步骤2:输入 where 软件名 举例:
- pyqt制作自动获取电脑IP地址的软件(含源代码)
由于去离校较远的地方实习,平时想连接实验室的电脑,只要得到电脑的IP地址即可.但是由于电脑的不稳定性导致意外重启之后就得不到IP地址了.所以萌生了想制作一个可以发IP地址的小软件.最终的目的是不管电脑 ...
- 这5个电脑软件提高工作效率1000%,装机必备
1.桌面日历 当我们工作之后,或者岁数大了之后,经常会忘记事情,这时候我们往往会通过记事本辅助我们记忆,写记事本的好处就是将需要做的事都列出来,让我们称之为[代办事项] 什么是[代办事项]:就是你把每 ...
- 电脑软件超时、MOCK测试方案
大家好,我是谭叔. 今天,谭叔跟大家分享我在测试电脑软件(程序)时,模拟超时环境的N种尝试,以及电脑软件(程序)的MOCK测试方案. 超时环境 在日常测试工作中,弱网环境.超时请求等异常测试,是必不可 ...
- win10清理_大家都说Win10系统不用装360,那么如何清理电脑软件垃圾呢?
电脑在我们的生活中经常用到,最近很多人都说,电脑装了Win10系统,就没必要再装360了,那么就有一个疑问,平时是如何清理电脑软件垃圾的呢? 对于这个问题,接下来就跟大家分享一下,如何优化电脑,让你的 ...
- python开发pc软件_程序员带你十天快速入门Python,玩转电脑软件开发(二)
关注今日头条-做全栈攻城狮,学代码也要读书,爱全栈,更爱生活.提供程序员技术及生活指导干货. 如果你真想学习,请评论学过的每篇文章,记录学习的痕迹. 请把所有教程文章中所提及的代码,最少敲写三遍,达到 ...
- 正在搜索需要的文件_装机必备!分享4个电脑软件,3分钟搞定文件管理难题!...
不知道你有没有出现下面这些情况: 想找一个文件,却不知道放在哪里了: 想到家里办公,却忘记拷贝文件: -- 其实,出现这些情况,可能是因为你没有做好文件管理工作. 而对于文件管理,需要进行以下四个步骤 ...
最新文章
- svn中出现红色感叹号
- php 表单录入,PHP 表单和用户输入
- 软件测试技术 homework2
- linux中写如空格参数,Vim中Tab与空格缩进
- 一步一步安装UEFI分区方式的windows 10 企业版
- python模块-time,datatime
- winform窗体MaximizeBox
- VC++如何计算一段代码的执行时间
- ubuntu 虚拟显示器制作
- 红帽Linux登录密码忘了,redhat linux忘记登陆密码之解决办法
- 基于matlab仿真的功率因数测定方法研究,基于MATLAB的单相全控整流电路功率因数测定.pdf...
- 《计算机网络 PDF》炸了!!!
- 绿联串口线linux驱动下载,绿联usb转串口驱动
- 文献(2): 综述_癌症相关成纤维细胞(CAF)的异质性【建议收藏】
- 媒体选择与发布实践总结
- 新媒体时代,内容为王已经走偏
- 利用python openpyxl库实现对多个excel工作簿的快速汇总
- 爬取Google Play中app的用户评论(1)
- 静雅学校有高中吗有计算机,涿州靖雅中学
- adf的主要功能之一是_ADF软件介绍