cheng5276 发表于 2014-10-29 21:30:07

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

         
非常郁闷的事,通过如下方法,在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 { }
            }

epwt 发表于 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版本。

cheng5276 发表于 2014-11-6 22:10:39

非常感谢老大的指点
页: [1]
查看完整版本: 关于C# 获取所有已安装的CAD的版本的疑惑