#region SolidWorks Registration [ComRegisterFunctionAttribute] public static void RegisterFunction(Type t) { #region Get Custom Attribute: SwAddinAttribute SwAddinAttribute SWattr = null; Type type = typeof(SwAddin); foreach (System.Attribute attr in type.GetCustomAttributes(false)) { if (attr is SwAddinAttribute) { SWattr = attr as SwAddinAttribute; break; } } #endregion try { Microsoft.Win32.RegistryKey hklm = Microsoft.Win32.Registry.LocalMachine; Microsoft.Win32.RegistryKey hkcu = Microsoft.Win32.Registry.CurrentUser; string keyname = "SOFTWARE\SolidWorks\Addins\{" + t.GUID.ToString() + "}"; Microsoft.Win32.RegistryKey addinkey = hklm.CreateSubKey(keyname); addinkey.SetValue(null, 0); addinkey.SetValue("Description", SWattr.Description); addinkey.SetValue("Title", SWattr.Title); keyname = "Software\SolidWorks\AddInsStartup\{" + t.GUID.ToString() + "}"; addinkey = hkcu.CreateSubKey(keyname); addinkey.SetValue(null, Convert.ToInt32(SWattr.LoadAtStartup), Microsoft.Win32.RegistryValueKind.DWord); } catch (System.NullReferenceException nl) { Console.WriteLine("There was a problem registering this dll: SWattr is null. "" + nl.Message + """); System.Windows.Forms.MessageBox.Show("There was a problem registering this dll: SWattr is null. "" + nl.Message + """); } catch (System.Exception e) { Console.WriteLine(e.Message); System.Windows.Forms.MessageBox.Show("There was a problem registering the function: "" + e.Message + """); } } [ComUnregisterFunctionAttribute] public static void UnregisterFunction(Type t) { try { Microsoft.Win32.RegistryKey hklm = Microsoft.Win32.Registry.LocalMachine; Microsoft.Win32.RegistryKey hkcu = Microsoft.Win32.Registry.CurrentUser; string keyname = "SOFTWARE\SolidWorks\Addins\{" + t.GUID.ToString() + "}"; hklm.DeleteSubKey(keyname); keyname = "Software\SolidWorks\AddInsStartup\{" + t.GUID.ToString() + "}"; hkcu.DeleteSubKey(keyname); } catch (System.NullReferenceException nl) { Console.WriteLine("There was a problem unregistering this dll: " + nl.Message); System.Windows.Forms.MessageBox.Show("There was a problem unregistering this dll: "" + nl.Message + """); } catch (System.Exception e) { Console.WriteLine("There was a problem unregistering this dll: " + e.Message); System.Windows.Forms.MessageBox.Show("There was a problem unregistering this dll: "" + e.Message + """); } } #endregion