五.獲取注冊表中的SolidWorks信息
[九.發(fā)布Visual Studio 擴(kuò)展]
五.獲取注冊表中的SolidWorks信息
5.1 獲取SolidWorks信息
- Win + R 輸入 regedit 打開注冊表
regedit.png
?在此路徑下有關(guān)于本機(jī)上安裝的SolidWork信息铺呵,SolidWorks2018代表18
版的信息,如果安裝了多個版本降狠,還會有16旧巾,19等等针饥。
計(jì)算機(jī)\HKEY_LOCAL_MACHINE\SOFTWARE\SolidWorks\SolidWorks 2018
- 展開此項(xiàng)脆霎,就可以看到這個版本的一些注冊信息尿孔,包括文件位置待德,設(shè)置選項(xiàng)等君丁。
?我們可以讀取部分信息放在我們的擴(kuò)展上,以便進(jìn)行像啟動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;
}
- 這里只需要一些讀取注冊表的操作便可以讀取一些信息(注意運(yùn)行的進(jìn)程是否有管理員權(quán)限)
5.2 獲取插件信息
?和讀取SolidWorks信息相比,讀取插件信息就有些繁瑣了较坛。對于插件來講簸喂,我們需要獲取插件名字,描述燎潮,安裝位置(dll位置喻鳄,主要信息,以便后面的卸載操作)确封,GUID(要通過GUID來找到dll位置)除呵。
- 區(qū)別SolidWorks插件和SolidWorks版本內(nèi)置插件。
RegeditAddin.png
- ①為共用插件,對電腦上安裝的每個SolidWorks都有用.
- ②為單獨(dú)版本的內(nèi)置插件
... 待續(xù)--19.1.9