From f12f301c829ef8d5abf1836b7372e32928344e3a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Cl=C3=A9ment=20Notin?= Date: Wed, 25 Jul 2018 11:22:11 +0200 Subject: [PATCH] Improve error message in ListDNSCache() when using Windows before 8/2012 The 'MSFT_DNSClientCache' WMI class is unavailable on older Windows versions Cf. https://msdn.microsoft.com/en-us/library/hh872334%28v=vs.85%29.aspx?f=255&MSPPError=-2147217396 --- Seatbelt/Program.cs | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/Seatbelt/Program.cs b/Seatbelt/Program.cs index 7f93ea5..184f25d 100755 --- a/Seatbelt/Program.cs +++ b/Seatbelt/Program.cs @@ -4008,15 +4008,14 @@ namespace Seatbelt public static void ListDNSCache() { + Console.WriteLine("\r\n\r\n=== DNS Cache (via WMI) ===\r\n"); + // lists the local DNS cache via WMI (MSFT_DNSClientCache class) - try { ManagementObjectSearcher wmiData = new ManagementObjectSearcher(@"root\standardcimv2", "SELECT * FROM MSFT_DNSClientCache"); ManagementObjectCollection data = wmiData.Get(); - Console.WriteLine("\r\n\r\n=== DNS Cache (via WMI) ===\r\n"); - foreach (ManagementObject result in data) { Console.WriteLine(" Entry : {0}", result["Entry"]); @@ -4024,6 +4023,10 @@ namespace Seatbelt Console.WriteLine(" Data : {0}\r\n", result["Data"]); } } + catch (ManagementException ex) when (ex.ErrorCode == ManagementStatus.InvalidNamespace) + { + Console.WriteLine(" [X] 'MSFT_DNSClientCache' WMI class unavailable (minimum supported versions of Windows: 8/2012)", ex.Message); + } catch (Exception ex) { Console.WriteLine(" [X] Exception: {0}", ex.Message);