Back to the basic apps I started with. There were a couple of locations where the output was "System.Byte[]" or "System.Object[]". System.Object[] appears to happen in "msifilelist", and only on those apps that have a transform. Given that you're loading everything into a DataRow, code like this will separate out the transform if one exists: foreach (object a in myDirectoryEntry.Properties... { if (a.ToString().ToLower().End... dr["Transforms"] = a.ToString(); else dr["msifilelist"]...