ich den folgenden Code geschrieben haben:Wie zu testen, ob eine Datei eine .NET-Assembly in C# ist
public DataTable GetDotNetAssemblies(string baseDirectory)
{
DataTable MethodResult = null;
try
{
if (Directory.Exists(baseDirectory))
{
List<string> FilePaths = NetworkConnection.GetAllFilesUnderDirectory(baseDirectory);
DataTable dt = new DataTable();
dt.Columns.Add("Directory");
dt.Columns.Add("Filename");
dt.Columns.Add("Date modified");
dt.Columns.Add("Bytes");
dt.Columns.Add("User modified");
foreach (string FilePath in FilePaths)
{
DataRow dr = dt.NewRow();
FileInfo f = new FileInfo(FilePath);
List<string> AllowedExtensions = new List<string>();
AllowedExtensions.Add(".exe");
AllowedExtensions.Add(".dll");
if (AllowedExtensions.Contains(f.Extension.ToLower()))
{
dr["Directory"] = f.Directory;
dr["Filename"] = f.Name;
dr["Date modified"] = f.LastWriteTime;
dr["Bytes"] = f.Length.ToString();
string UserModified = "";
try
{
UserModified = f.GetAccessControl().GetOwner(typeof(System.Security.Principal.NTAccount)).ToString();
}
catch
{
UserModified = "Unknown";
}
dr["User modified"] = UserModified;
dt.Rows.Add(dr);
}
}
dt.AcceptChanges();
MethodResult = dt;
}
else
{
MessageBox.Show("Unable to connect to directory:\n" + baseDirectory);
}
}
catch (Exception ex)
{
ex.HandleException();
}
return MethodResult;
}
ich bereits von Dateierweiterung am Filterung, die Sie durch die Linie sehen:
if (AllowedExtensions.Contains(f.Extension.ToLower()))
Was ich brauche ist, die Assembly-Dateien weiter zu filtern, indem Sie überprüfen, ob es sich um .Net-Assemblys handelt oder nicht.
Gibt es einen Test, den ich an einer Datei durchführen kann?
Darüber hinaus, wenn es möglich ist herauszufinden, welche Version von. Net CLR in der Assembly verwendet wird, wäre das noch besser.