c#我如何判断一个exe是否在硬盘驱动器上
本文关键字:exe 一个 是否 硬盘驱动器 何判断 判断 | 更新日期: 2023-09-27 18:04:23
有一个exe文件,它可以在驱动器上的任何地方。如何使用c#和WinForms扫描并判断是否存在
我试过这个代码,但没有让它正常工作
if (Directory.GetFiles(@"C:'", "MCRInstaller.exe", SearchOption.AllDirectories))
{
// do something.
}
List<string> files = Directory.EnumerateFiles(startFolder, "*.txt",
SearchOption.AllDirectories).ToList();
您可能还想知道,当您命中系统文件夹(系统卷信息,recycle, Windows等)时,您将抛出异常。
考虑一些排除,如下面的lambda:
List<string> matches = new List<string>();
DirectoryInfo C = new DirectoryInfo("C:''");
var rootFiles = C.GetFiles();
var rootDirs = C.GetDirectories("*", SearchOption.TopDirectoryOnly).Where(dir => !dir.Name.Equals("System Volume Information") && !dir.Name.Equals("RECYCLER") && !dir.Name.Equals("WINDOWS"));
foreach (var rf in rootFiles)
{
if (rf.Name.Equals("MCRInstaller.exe"))
{
matches.Add(rf.FullName);
}
}
foreach (var rdir in rootDirs)
{
try
{
var dirFiles = rdir.GetFiles("*", SearchOption.AllDirectories);
foreach (var aFile in dirFiles)
{
if (aFile.Name.Equals("MCRInstaller.exe"))
{
matches.Add(aFile.FullName);
}
}
}
catch (UnauthorizedAccessException err)
{
using (StreamWriter errLog = File.AppendText("errors.log"))
{
string dt = "[" + DateTime.Now + "]: ";
errLog.Write(dt);
errLog.Write(err.StackTrace);
}
}
}
foreach (string match in matches)
{
//do some stuff with your list of matches
}