我现在已经获得了所有的exe文件,但事情是x.x它给了我所有的EXE,现在我必须在运行所需应用程序和所有垃圾可执行文件的可执行文件之间进行过滤。 就像我在Internet Explorer文件夹中一样:
C:\ Program Files \ Internet Explorer \ ieinstal.exe
C:\ Program Files \ Internet Explorer \ ielowutil.exe
C:\ Program Files \ Internet Explorer \ iexplorer.exe
但我只想要iexplorer.exe
文件,对我来说,其他所有文件都是垃圾邮件。有没有办法在这些之间进行过滤?
List<string> path = new List<string>();
List<string> realPaths = new List<string>();
try
{
path.AddRange(Directory.GetFiles(@"C:\Program Files\", "*.exe", SearchOption.AllDirectories));
path.AddRange(Directory.GetFiles(@"C:\Program Files (x86)\", "*.exe", SearchOption.AllDirectories));
foreach (string item in path)
{
string[] parse = item.Split('\\');
if (parse.Contains("Common Files")
|| parse.Contains("IIS") || parse.Contains("Microsoft Help Viewer")
|| parse.Contains("Microsoft SQL Server") || parse.Contains("Microsoft SQL Server Compact Edition")
|| parse.Contains("Microsoft Sync Framework") || parse.Contains("Microsoft Synchronization Services")
|| parse.Contains("Microsoft Visual Studio 9.0") || parse.Contains("Microsoft.NET") || parse.Contains("MSBuild")
|| parse.Contains("Reference Assemblies") || parse.Contains("Windows Defender") || parse.Contains("Windows NT")
|| parse.Contains("HTML Help Workshop") || parse.Contains("Microsoft Analysis Services") || parse.Contains("Microsoft ASP.NET")
|| parse.Contains("Microsoft F#") || parse.Contains("Microsoft Games for Windows - LIVE") || parse.Contains("Microsoft SDKs")
|| parse.Contains("Microsoft Silverlight") || parse.Contains("Microsoft Visual Studio 8") || parse.Contains("Microsoft XNA")
|| parse.Contains("Mozilla Maintenance Service"))
{
continue;
}
else
{
realPaths.Add(item);
}
}
foreach (string item in realPaths)
{
Console.WriteLine(item + "\n");
}
}
答案 0 :(得分:1)
不,没有完美的方法可以做你想做的事情;所有可执行文件基本上都是“创建相同的。”
您希望实现什么目标,为什么?
也许您的目标是仅显示用户可能想要运行的可执行文件?如果这是您的目标,那么您的问题可能是:“如何判断用户之前使用过哪些可执行文件,或者将来可能直接调用哪些可执行文件?”
如果这是问题,那么你可以想出一个启发式方法来尝试解决问题。您的算法可以执行以下操作:查看桌面和“开始”菜单上的快捷方式,以及在 AppPaths 和类似位置中注册的基于注册表的程序列表,以尝试推断哪些可执行文件或多或少可能会被运行。当然,它并不完美,但有时候一种不完美的方法总比没有好。