明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 1592|回复: 2

关于C# 获取所有已安装的CAD的版本的疑惑

[复制链接]
发表于 2014-10-29 21:30:07 | 显示全部楼层 |阅读模式
         
非常郁闷的事,通过如下方法,在WIN7 64位系统中,竟然无法获取 Registry.LocalMachine.OpenSubKey 下的任何值,请教老大们有其他方法能够获得64位系统中已安装的CAD的所有版本及安装位置么?

  RegistryKey allcad = Registry.LocalMachine.OpenSubKey("HKEY_LOCAL_MACHINE\\SOFTWARE\\Autodesk\\AutoCAD", false);//加true读写模式
            List<string> CAD_PATHLST = new List<string>();
            
            foreach (string bb in allcad.GetSubKeyNames())
            {
                string bbz = "Software\\Autodesk\\AutoCAD\\" + bb;
                RegistryKey allbb = Registry.LocalMachine.OpenSubKey(bbz, false); //得到所有版本
                try
                {
                    foreach (string LAG in allbb.GetSubKeyNames()) //得到各版本下的各语言版
                    {
                        string CADPATH = Registry.LocalMachine.OpenSubKey(bbz + "\\" + LAG, false).GetValue("AcadLocation").ToString(); //得到所有版本
                        if (File.Exists(CADPATH + "\\acad.exe"))
                        {
                            CAD_PATHLST.Add(CADPATH);
                        }
                    }
                }
                catch { }
            }
            
            
            allcad = Registry.LocalMachine.OpenSubKey("Software\\Wow6432Node\\Autodesk\\AutoCAD", false);//加true读写模式
            foreach (string bb in allcad.GetSubKeyNames())
            {
                string bbz = "Software\\Wow6432Node\\Autodesk\\AutoCAD\\" + bb;
                RegistryKey allbb = Registry.LocalMachine.OpenSubKey(bbz, false); //得到所有版本
                try
                {
                    foreach (string LAG in allbb.GetSubKeyNames()) //得到各版本下的各语言版
                    {
                        string CADPATH = Registry.LocalMachine.OpenSubKey(bbz + "\\" + LAG, false).GetValue("AcadLocation").ToString(); //得到所有版本
                        if (File.Exists(CADPATH + "\\acad.exe"))
                        {
                            CAD_PATHLST.Add(CADPATH);
                        }
                    }
                }
                catch { }
            }
发表于 2014-10-31 14:56:41 | 显示全部楼层
请尝试使用:
RegistryKey KeyAutoCAD = RegistryKey.OpenBaseKey(RegistryHive.LocalMachine,RegistryView.Registry64);获得RegistryKey对象,
调用
RegistryKey regKeyAutoCAD = KeyAutoCAD.OpenSubKey(@"Software\Autodesk\AutoCAD", false);
string[] AutoCAD_Versions = regKeyAutoCAD.GetSubKeyNames();
获得安装目录下所有CAD版本。

评分

参与人数 1明经币 +1 金钱 +5 收起 理由
cheng5276 + 1 + 5

查看全部评分

 楼主| 发表于 2014-11-6 22:10:39 | 显示全部楼层
非常感谢老大的指点
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2024-12-24 07:39 , Processed in 0.190339 second(s), 31 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表