If the searcher is containing nulls, then you can ignore them quite easily:
List<string> list = searcher2.Get().Where(m => m != null).Cast<ManagementObject>().Select(mo2 => mo2["Name"].ToString()).Where(name => name.Contains("(COM")).ToList();
But you shouldn't need to cast the collection to ManagementObjects, since the Get method returns a collection of them already:
MSDN[
^]