public void Delete() { if (ToDeleteInterfaces.Count != 0) { foreach (var interfaceProfile in ToDeleteInterfaces) { DeleteInterfaceProfiles(interfaceProfile); InterfaceProfiles.Remove(interfaceProfile); } } UpdateInterfaceProfileListKey(); if (ToDeleteNetworks.Count != 0) { foreach (var networkProfile in ToDeleteNetworks) { DeleteNetworkProfiles(networkProfile); NetworkProfiles.Remove(networkProfile); } } // Clear trackers ToDeleteInterfaces.Clear(); ToDeleteNetworks.Clear(); }
private void UpdateInterfaceProfileListKey() { try { var registry = RegistryKey.OpenBaseKey(RegistryHive.LocalMachine, SixtyFourBitChecked ? RegistryView.Registry64 : RegistryView.Registry32); var grouped = InterfaceProfiles.GroupBy(i => i.InterfaceGuid, p => p.ProfileGuid, (key, g) => new { InterfaceGuid = key, ProfileGuids = g.ToList() }); foreach (var g in grouped) { var profile = registry.OpenSubKey(@"SOFTWARE\Microsoft\WlanSvc\Interfaces\" + g.InterfaceGuid, true); if (profile != null) { profile.SetValue("ProfileList", g.ProfileGuids.ToArray()); } } registry.Close(); } catch (Exception ex) { if (ex is SecurityException || ex is UnauthorizedAccessException) { MessageBox.Show(ex.Message + " Please run as administrator.", "Admin rights required"); } if (ex is ArgumentException || ex is NullReferenceException) { MessageBox.Show(ex.Message, "Could not find registry key"); } } }
public void LoadAll() { // Clear collections so no duplicate InterfaceProfiles.Clear(); NetworkProfiles.Clear(); ToDeleteInterfaces.Clear(); ToDeleteNetworks.Clear(); // Load all interfaces GetInterfaces(); GetNetworks(); }
public void GetInterfaces() { try { var registry = RegistryKey.OpenBaseKey(RegistryHive.LocalMachine, SixtyFourBitChecked ? RegistryView.Registry64 : RegistryView.Registry32); var interfaces = registry.OpenSubKey(@"SOFTWARE\Microsoft\WlanSvc\Interfaces\"); if (interfaces == null) { return; } foreach (var subkey in interfaces.GetSubKeyNames()) { var profile = interfaces.OpenSubKey(subkey); if (profile == null) { continue; } var items = (string[])profile.GetValue("ProfileList"); if (items == null) { continue; } foreach (var interfaceProfile in items.Select(item => GetInterfaceMetadata(subkey, item)).Where(interfaceProfile => interfaceProfile != null)) { InterfaceProfiles.Add(interfaceProfile); } profile.Close(); } registry.Close(); interfaces.Close(); } catch (Exception ex) { if (ex is SecurityException || ex is UnauthorizedAccessException) { MessageBox.Show(ex.Message + " Please run as administrator.", "Admin rights required"); } if (ex is ArgumentException || ex is NullReferenceException) { MessageBox.Show(ex.Message, "Could not find registry key"); } } }