From f327c2aa76bb0a85fd1a936fc5bebaa2a2a452dd Mon Sep 17 00:00:00 2001 From: wj32 Date: Sat, 24 Jan 2009 00:54:17 +0000 Subject: [PATCH] service provider now uses a case-insensitive dictionary key, eliminating KeyNotFoundException errors git-svn-id: svn://svn.code.sf.net/p/processhacker/code@574 21ef857c-d57f-4fe0-8362-d861dc6d29cd --- .../Components/ServiceProperties.cs | 17 +++++++++++++++++ trunk/ProcessHacker/Providers/Provider.cs | 10 +++++++++- .../ProcessHacker/Providers/ServiceProvider.cs | 4 ++-- 3 files changed, 28 insertions(+), 3 deletions(-) diff --git a/trunk/ProcessHacker/Components/ServiceProperties.cs b/trunk/ProcessHacker/Components/ServiceProperties.cs index 4f0291b6a..bfce3fbe9 100644 --- a/trunk/ProcessHacker/Components/ServiceProperties.cs +++ b/trunk/ProcessHacker/Components/ServiceProperties.cs @@ -215,6 +215,23 @@ namespace ProcessHacker { textDescription.Text = ""; } + + try + { + using (ServiceController controller = new ServiceController( + listServices.SelectedItems[0].Name)) + { + if (controller.DependentServices.Length == 0) + buttonDependents.Enabled = false; + if (controller.ServicesDependedOn.Length == 0) + buttonDependencies.Enabled = false; + } + } + catch + { + buttonDependents.Enabled = false; + buttonDependencies.Enabled = false; + } } catch (Exception ex) { diff --git a/trunk/ProcessHacker/Providers/Provider.cs b/trunk/ProcessHacker/Providers/Provider.cs index d79d115c6..84636037c 100644 --- a/trunk/ProcessHacker/Providers/Provider.cs +++ b/trunk/ProcessHacker/Providers/Provider.cs @@ -126,8 +126,16 @@ namespace ProcessHacker /// Creates a new instance of the Provider class. /// public Provider() + : this(null) + { } + + /// + /// Creates a new instance of the Provider class, specifying a + /// custom equality comparer. + /// + public Provider(IEqualityComparer comparer) { - _dictionary = new Dictionary(); + _dictionary = new Dictionary(comparer); _thread = new Thread(new ThreadStart(Update)); _thread.SetApartmentState(ApartmentState.STA); diff --git a/trunk/ProcessHacker/Providers/ServiceProvider.cs b/trunk/ProcessHacker/Providers/ServiceProvider.cs index 310ba7e07..d3830e319 100644 --- a/trunk/ProcessHacker/Providers/ServiceProvider.cs +++ b/trunk/ProcessHacker/Providers/ServiceProvider.cs @@ -37,9 +37,9 @@ namespace ProcessHacker public class ServiceProvider : Provider { public ServiceProvider() - : base() + : base(StringComparer.InvariantCultureIgnoreCase) // Windows is case-insensitive with services { - this.ProviderUpdate += new ProviderUpdateOnce(UpdateOnce); + this.ProviderUpdate += new ProviderUpdateOnce(UpdateOnce); } public void UpdateServiceConfig(string name, Win32.QUERY_SERVICE_CONFIG config)