五.获取注册表中的SolidWorks信息
[九.发布Visual Studio 扩展]
五.获取注册表中的SolidWorks信息
5.1 获取SolidWorks信息
- Win + R 输入 regedit 打开注册表
在此路径下有关于本机上安装的SolidWork信息,SolidWorks2018代表18
版的信息,如果安装了多个版本,还会有16,19等等。
计算机\HKEY_LOCAL_MACHINE\SOFTWARE\SolidWorks\SolidWorks 2018
- 展开此项,就可以看到这个版本的一些注册信息,包括文件位置,设置选项等。
我们可以读取部分信息放在我们的扩展上,以便进行像启动SolidWorks(可以在注册表中找到安装位置),找到SolidWorks.Interp.*.dll的位置。
public static ObservableCollection<Du.Model.SolidWorksInfoModel> ReadSolidWorksInfo()
{
ObservableCollection<Du.Model.SolidWorksInfoModel> solidWorksInfoModels = new ObservableCollection<Du.Model.SolidWorksInfoModel>();
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版本内置插件。
- ①为共用插件,对电脑上安装的每个SolidWorks都有用.
- ②为单独版本的内置插件
... 待续--19.1.9