public static void Generate(string computerName, SyncList <DprNetworkInfo> result)
        {
            Helpers.AssertNotNull(result, @"result SyncList cannot be null");
            Helpers.AssertString(computerName, @"Computer name cannot be empty");
            var networkInfoList = new List <DprNetworkInfo>( );

            try {
                WmiHelpers.ForEach(computerName, @"SELECT * FROM Win32_NetworkAdapterConfiguration", obj => {
                    var ci = new DprNetworkInfo(computerName);
                    ci.DefaultIpGateway             = WmiHelpers.GetStringArray(obj, @"DefaultIPGateway");
                    ci.Description                  = WmiHelpers.GetString(obj, @"Description");
                    ci.DhcpEnabled                  = WmiHelpers.GetBoolean(obj, @"DHCPEnabled");
                    ci.DhcpLeaseExpires             = WmiHelpers.GetNullableDate(obj, @"DHCPLeaseExpires", true);
                    ci.DhcpLeaseObtained            = WmiHelpers.GetNullableDate(obj, @"DHCPLeaseObtained", true);
                    ci.DhcpServer                   = WmiHelpers.GetString(obj, @"DHCPServer");
                    ci.DnsDomain                    = WmiHelpers.GetString(obj, @"DNSDomain");
                    ci.DnsDomainSuffixSearchOrder   = WmiHelpers.GetStringArray(obj, @"DNSDomainSuffixSearchOrder");
                    ci.DnsEnabledForWinsResolution  = WmiHelpers.GetNullableBoolean(obj, @"DNSEnabledForWINSResolution");
                    ci.DnsHostName                  = WmiHelpers.GetString(obj, @"DNSHostName");
                    ci.DnsServerSearchOrder         = WmiHelpers.GetStringArray(obj, @"DNSServerSearchOrder");
                    ci.DomainDnsRegistrationEnabled = WmiHelpers.GetNullableBoolean(obj, @"DomainDNSRegistrationEnabled");
                    ci.FullDnsRegistrationEnabled   = WmiHelpers.GetNullableBoolean(obj, @"FullDNSRegistrationEnabled");
                    ci.Index                   = WmiHelpers.GetUInt(obj, @"Index");
                    ci.InterfaceIndex          = WmiHelpers.GetUInt(obj, @"InterfaceIndex");
                    ci.IpAddress               = WmiHelpers.GetStringArray(obj, @"IPAddress");
                    ci.IpConnectionMetric      = WmiHelpers.GetNullableUInt(obj, @"IPConnectionMetric");
                    ci.IpEnabled               = WmiHelpers.GetNullableBoolean(obj, @"IPEnabled");
                    ci.MacAddress              = WmiHelpers.GetString(obj, @"MACAddress");
                    ci.SettingId               = WmiHelpers.GetString(obj, @"SettingID");
                    ci.WinsEnableLmHostsLookup = WmiHelpers.GetNullableBoolean(obj, @"WINSEnableLMHostsLookup");
                    ci.WinsHostLookupFile      = WmiHelpers.GetString(obj, @"WINSHostLookupFile");
                    ci.WinsPrimaryServer       = WmiHelpers.GetString(obj, @"WINSPrimaryServer");
                    ci.WinsSecondaryServer     = WmiHelpers.GetString(obj, @"WINSSecondaryServer");
                    ci.WinsScopeId             = WmiHelpers.GetString(obj, @"WINSScopeID");

                    networkInfoList.Add(ci);
                    return(true);
                }, true, false);
            } catch (UnauthorizedAccessException) {
                result.Add(new DprNetworkInfo(computerName, ConnectionStatuses.AuthorizationError));
                return;
            } catch (Exception) {
                result.Add(new DprNetworkInfo(computerName, ConnectionStatuses.Error));
                return;
            }
            result.AddRange(networkInfoList);
            ValidateUniqueness(result);
        }