五.获取注册表中的SolidWorks信息

  • 一.为SolidWorks开发一个Visual Studio扩展

  • 二.实现右击查看Api Help

  • 三.使用Roslyn分析代码

  • 四.如何新建一个Visual Studio ToolBox

  • 五.获取注册表中的SolidWorks信息

  • 六.实现SolidWorks Api的Quick Info

  • 七.实现SolidWorks Api 的 Signature 签名帮助

  • 八.为扩展添加模板

  • [九.发布Visual Studio 扩展]

  • 源码地址-Github

五.获取注册表中的SolidWorks信息

5.1 获取SolidWorks信息

  • Win + R 输入 regedit 打开注册表
regedit.png

 在此路径下有关于本机上安装的SolidWork信息,SolidWorks2018代表18
版的信息,如果安装了多个版本,还会有16,19等等。
计算机\HKEY_LOCAL_MACHINE\SOFTWARE\SolidWorks\SolidWorks 2018

  • 展开此项,就可以看到这个版本的一些注册信息,包括文件位置,设置选项等。

 我们可以读取部分信息放在我们的扩展上,以便进行像启动SolidWorks(可以在注册表中找到安装位置),找到SolidWorks.Interp.*.dll的位置。

public static ObservableCollection ReadSolidWorksInfo()
        {
            ObservableCollection solidWorksInfoModels = new ObservableCollection();

            try
            {
                if (!Du.Setting.DuSWExPathManager.IsAdministrator())
                {
                    return null;
                }

                Microsoft.Win32.RegistryKey localMachine64 = Microsoft.Win32.RegistryKey.OpenBaseKey(Microsoft.Win32.RegistryHive.LocalMachine, Microsoft.Win32.RegistryView.Registry64);

                RegistryKey SolidWorksKey = localMachine64.OpenSubKey(@"SOFTWARE\solidworks",false);
                if (SolidWorksKey != null)
                {
                    var SubKeyList = SolidWorksKey.GetSubKeyNames();
                    foreach (var item in SubKeyList)
                    {
                        if (item.ToLower().Contains("solidworks"))
                        {
                            string versionNumStr = item.ToLower().Replace("solidworks", "").Trim();
                            int versionNum = 0;
                            if (int.TryParse(versionNumStr, out versionNum))
                            {
                                string SWdate = string.Empty;
                                string SWSource = string.Empty;
                                string SolidWorksFolder = string.Empty;
                                //读取安装信息
                                var SetupInfoKey = localMachine64.OpenSubKey(@"SOFTWARE\solidworks\"+item + "\\" + "Setup",true);// SolidWorksKey.OpenSubKey(item + "\\" + "Setup\\",false);
                                if (SetupInfoKey != null)
                                {
                                    var names = SetupInfoKey.GetSubKeyNames();
                                    var namessd =  SetupInfoKey.GetValueNames();


                                    var date = SetupInfoKey.GetValue("Install Date Stamp");
                                    if (date != null)
                                    { SWdate = date.ToString(); }

                                    var Source = SetupInfoKey.GetValue("InstallSource");
                                    if (Source != null)
                                    { SWSource = Source.ToString(); }

                                    var folder = SetupInfoKey.GetValue("SolidWorks Folder");
                                    if (folder != null)
                                    { SolidWorksFolder = folder.ToString(); }
                                    
                                }
                                Du.Model.SolidWorksInfoModel model = new Du.Model.SolidWorksInfoModel(item, versionNum, SWdate, SWSource, SolidWorksFolder);

                                solidWorksInfoModels.Add(model);
                            }
                            
                        }
                    }
                    return solidWorksInfoModels;
                }
            }
            catch (Exception ex)
            {
                System.Windows.MessageBox.Show(ex.ToString());
            }
            return null;
        }
    
  • 这里只需要一些读取注册表的操作便可以读取一些信息(注意运行的进程是否有管理员权限)

5.2 获取插件信息

 和读取SolidWorks信息相比,读取插件信息就有些繁琐了。对于插件来讲,我们需要获取插件名字,描述,安装位置(dll位置,主要信息,以便后面的卸载操作),GUID(要通过GUID来找到dll位置)。

  • 区别SolidWorks插件和SolidWorks版本内置插件。
RegeditAddin.png
  • ①为共用插件,对电脑上安装的每个SolidWorks都有用.
  • ②为单独版本的内置插件

... 待续--19.1.9

你可能感兴趣的:(五.获取注册表中的SolidWorks信息)