乐筑天下

搜索
欢迎各位开发者和用户入驻本平台 尊重版权,从我做起,拒绝盗版,拒绝倒卖 签到、发布资源、邀请好友注册,可以获得银币 请注意保管好自己的密码,避免账户资金被盗
查看: 52|回复: 2

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

[复制链接]

32

主题

140

帖子

5

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
268
发表于 2014-10-29 21:30:00 | 显示全部楼层 |阅读模式
非常郁闷的事,通过如下方法,在WIN7 64位系统中,竟然无法获取 Registry.LocalMachine.OpenSubKey 下的任何值,请教老大们有其他方法能够获得64位系统中已安装的CAD的所有版本及安装位置么?
  RegistryKey allcad = Registry.LocalMachine.OpenSubKey("HKEY_LOCAL_MACHINE\\SOFTWARE\\Autodesk\\", false);//加true读写模式
            List CAD_PATHLST = new List();
            
            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 + ""))
                        {
                            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 + ""))
                        {
                            CAD_PATHLST.Add(CADPATH);
                        }
                    }
                }
                catch { }
            }
回复

使用道具 举报

22

主题

99

帖子

2

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
187
发表于 2014-10-31 14:56:00 | 显示全部楼层
请尝试使用:
RegistryKey KeyAutoCAD = RegistryKey.OpenBaseKey(RegistryHive.LocalMachine,RegistryView.Registry64);获得RegistryKey对象,
调用
RegistryKey regKeyAutoCAD = KeyAutoCAD.OpenSubKey(@"Software\Autodesk\AutoCAD", false);
string[] AutoCAD_Versions = regKeyAutoCAD.GetSubKeyNames();
获得安装目录下所有CAD版本。
回复

使用道具 举报

32

主题

140

帖子

5

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
268
发表于 2014-11-6 22:10:00 | 显示全部楼层
非常感谢老大的指点
回复

使用道具 举报

发表回复

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

QQ|关于我们|小黑屋|乐筑天下 繁体中文

GMT+8, 2025-6-28 22:53 , Processed in 2.129944 second(s), 58 queries .

© 2020-2025 乐筑天下

联系客服 关注微信 帮助中心 下载APP 返回顶部 返回列表