/// <summary>
        /// Writes the data into registry.
        /// </summary>
        /// <param name="card">The card.</param>
        public static void WriteDataIntoRegistry(WindowsNetworkCard card)
        {
            switch (OSInfo.OperatingSystem)
            {
            case OperatingSystemType.WINDOWS_XP:
                WinXPNetworkCardManager.WriteDataIntoRegistry(card);
                break;

            case OperatingSystemType.WINDOWS_7:
                Win7NetworkCardManager.WriteDataIntoRegistry(card);
                break;
            }
        }
        /// <summary>
        /// Applies the specified card.
        /// </summary>
        /// <param name="card">The card.</param>
        public static void Apply(WindowsNetworkCard card)
        {
            switch (OSInfo.OperatingSystem)
            {
            case OperatingSystemType.WINDOWS_XP:
                WinXPNetworkCardManager.Apply(card);
                break;

            case OperatingSystemType.WINDOWS_7:
                Win7NetworkCardManager.Apply(card);
                break;
            }
        }
        /// <summary>
        /// Gets the windows services list.
        /// The disabled cards in this list has the MaxSpeed and AdapterType set to null.
        /// </summary>
        /// <returns></returns>
        internal static List <WindowsNetworkCard> GetWindowsNetworkCardList()
        {
            List <WindowsNetworkCard> array;

            switch (OSInfo.OperatingSystem)
            {
            case OperatingSystemType.WINDOWS_XP:
            {
                array = WinXPNetworkCardManager.GetWindowsNetworkCardList();
                break;
            }

            case OperatingSystemType.WINDOWS_7:
            {
                array = Win7NetworkCardManager.GetWindowsNetworkCardList();
                break;
            }

            default:
                throw (new Exception("Operating system not supported"));
            }

            foreach (WindowsNetworkCard item in array)
            {
                // try to determine the card type
                // wifi
                if (CheckIfWirelessCard(item))
                {
                    item.CardType = WindowsNetworkCardType.WIRELESS;
                }
                if (CheckIfVirtualCard(item))
                {
                    item.CardType = WindowsNetworkCardType.VIRTUAL;
                }
                if (CheckIfBluetoothCard(item))
                {
                    item.CardType = WindowsNetworkCardType.BLUETOOTH;
                }
                if (CheckIfFireWireCard(item))
                {
                    item.CardType = WindowsNetworkCardType.FIREWIRE;
                }
                if (item.CardType == WindowsNetworkCardType.UNKNOWN)
                {
                    item.CardType = WindowsNetworkCardType.ETHERNET;
                }
            }


            return(array);
        }