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
master
Clément Notin 2018-07-25 11:22:11 +02:00 committed by GitHub
parent 73fcff8e9c
commit f12f301c82
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
1 changed files with 6 additions and 3 deletions

View File

@ -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);