判断以及获取visual studio安装路径
来源:互联网 发布:学编程买什么笔记本 编辑:程序博客网 时间:2024/06/10 00:10
最近发现用vs处理xml文件还挺方便的哦,关键是快捷键已经用的很熟,除了没有相同字符串高亮这个notepad++特有的功能外,其他都已经很完善了,语法检查不错,所以,在工具里就想用vs作为默认xml文本编辑器。
研究了很久的注册表项,才发现判断vs是否安装并不是那么容易,起码并不是那么简单的。
1.vs的注册项在HKEY_CURRENT_USER/SOFTWARE/MICROSOFT/VISUALSTUDIO/ 下,如果同时安装了vs8,vs9,那么该项下降有两个项:8.0 , 9.0;
注意:不要从HKEY_LOCAL_MACHINE中找,你会发现一大堆版本,vs3—vs9都有。
2.vs的安装位置,这个也不是那么的靠谱,只能找到一个最后写入注册表的位置。在安装vs的时候会注册一个
HKEY_LOCAL_MACHILE/SOFTWARE/MICROSOFT/CURRENTVERSION/APP PATHS/DEVENV.EXE,默认值就是vs的安装位置,但是如果你先安装了vs8,在安装了vs9,那么该项就被改写成vs9的安装目录了。
3.也许你会说平常打开vs solution没问题啊,windows找到合适的vs打开的,其实,还有一个东西,就是在c:/program files/common files/microsoft shared/msenv/vslauncher.exe,这个学名叫visual studio version selector,专门用来获取正确的vs的版本。它应该维护了visual studio的版本及位置信息,但是遗憾的是,vslauncher并没有把相关信息存储在注册表里--这可真是头疼啊....
...
以上的思路貌似没什么错,但是其实是错了,各位看官发现了吗...
从一开始我就错了,导致后面的推理越来越复杂。第一步当我在看到HKEY_LOCAL_MACHINE/SOFTWARE/MICROSOFT/VISUALSTUDIO/中那么多的版本时,我就片面的认为这个项里的信息并不实用,所以都没有检验就直接忽略了,但其实在那里面确实存在着关键的信息。虽然那里面确实存在着诸多的版本,但是没有安装的并没有什么值,而在已经安装的项下,会看到InstallDir--也就是该版本的安装目录,这样,就ok了。
操纵注册表,自己一个个写注册表函数是要死人的,我曾多次写过,但是多次忘记,那些函数的设计实在是很不人性化啊。但是不要紧,我们有bcg,使用其中的CBCGPRegistry类,能够轻松操作注册表,当然像codeproject上也有很多免费的类库,总之,千万别自己写,真要写就写个全面的,也发布到网上去,以后可以复用的,否则就没意思了,因为你不久就会忘记的:~(
总结一下:1.先从HKEY_CURRENT_USER下获取用户确实安装的版本数,比如有8.0,9.0两个版本,然后让用户选择一个作为默认版本,接着从HKEY_LOCAL_MACHINE里找到对应的版本号并获取其地址,然后将其写入工具的注册表里。
- 判断以及获取visual studio安装路径
- Visual studio安装路径问题
- visual studio 2015 安装路径不能修改
- Visual Studio 2017&C#打包应用程序详细教程,重写安装类获取安装路径,附加各种奇葩问题描述
- Visual Studio 路径宏
- Visual Studio 安装项目的系统必备项存放路径
- Visual Studio 2017离线安装包获取和安装教程
- OpenCV 安装 以及在visual studio上的配置
- Visual Studio 2013 帮助文档 安装以及如何直接打开
- 免费获取 visual studio 2013正版安装软件
- Visual Studio项目相对路径
- Visual studio的路径宏
- Visual Studio 版本的判断
- Visual Studio 版本的判断
- 安装SQL Server 2008后,再安装Visual Studio 2008无法选择安装路径的解决方法
- 安装 visual.studio.2005
- 安装 Visual Studio 2005
- visual studio 安装相关
- android内核编译方法 转载
- iPad 进展一
- 关于射频资料的论坛和网站
- java 获取网页内容
- Python ConfigParser 与 ConfigObj INI 配置读写顺序
- 判断以及获取visual studio安装路径
- ping不通外网,但能正常上网的原因
- js 常见的错误
- 你在学习Qt吗?
- Oracle 10G 数据泵学习纪要(expdp/impdp)
- C#获取字符串的长度
- 线性网络分析
- ORACLE 10G 如何使用超过1.7G的内存
- 设置session过期时间问题