C# 如何在C中通过WMI查找基于不同扩展名的C驱动器文件和子文件夹中的文件路径列表

C# 如何在C中通过WMI查找基于不同扩展名的C驱动器文件和子文件夹中的文件路径列表,c#,wmi,wmi-query,C#,Wmi,Wmi Query,我需要从整个C驱动器中搜索扩展名mp3和更多的文件,并且只将其路径存储在特定的列表字符串中,目前我只是在控制台上打印,我也会得到重复的结果。即使找到一个文件,我也只想跳过。除了mp3和avi以及更多文件,如何搜索所有类型的扩展名文件 List<string> filesmediaFound = new List<string>(); string machinename = Environment.MachineNa

我需要从整个C驱动器中搜索扩展名mp3和更多的文件,并且只将其路径存储在特定的列表字符串中,目前我只是在控制台上打印,我也会得到重复的结果。即使找到一个文件,我也只想跳过。除了mp3和avi以及更多文件,如何搜索所有类型的扩展名文件

List<string> filesmediaFound = new List<string>();
                            string machinename = Environment.MachineName;
                            string wmifilepath = @"\\" + machinename + @"\root\CIMV2";
                            string fileSearchQuery = @"SELECT * FROM CIM_DataFile WHERE Drive='C:' AND Extension = 'mp3'";

                            // ObjectQuery querystring = new ObjectQuery(fileSearchQuery);
                            using (ManagementObjectSearcher search = new ManagementObjectSearcher(wmifilepath, fileSearchQuery)) 
                            {
                                foreach (ManagementObject result in search.Get())
                                {

                                    Console.WriteLine( result["Path"].ToString());
                                }
                            }

如果您只想搜索文件,那么可以在System.IO中使用目录类

Directory.GetFiles(@"C:\", "*.mp3". SearchOption.AllDirectories)

它不允许我搜索被拒绝访问的文件,比如用户文件夹。。我想通过WMI@sandepi搜索它们,但我怀疑您是否能够使用WMI访问这些文件夹。您可以在代码中处理这种情况。使用WMI API的任何特定原因都会在IO方面遇到困难,请查看链接[因此,请使用WMI@Sandepi查找答案],我在注释中找到了解决问题的可能方法:。如果不起作用,您可能希望自己在目录中运行递归。