目前我正在尝试用C#编写一个控制台应用程序,它显示了" Startup"显示的所有信息。 Taskmanager中的选项卡。
获得" Startup影响"我需要从C:\ Windows \ System32 \ WDI \ LogFiles \ StartupInfo目录中的最新XML文件中读取信息。 我想用
做到这一点 XmlDocument doc = new XmlDocument();
documentname包含带有数字的SID + _Startupinfo。 在每次启动时,Windows都会创建一个新文档。这意味着文档名称会更改。 有没有办法总是得到最新的文件,在这种情况下5?
答案 0 :(得分:1)
请检查
var directory = new DirectoryInfo("C:\\MyDirectory");
var myFile = (from x in directory.GetFiles()
orderby x.LastWriteTime descending
select x).First();
// or...
var myFile = directory.GetFiles()
.OrderByDescending(x => x.LastWriteTime)
.First();
以上代码将从文件夹中读取最新文档。
答案 1 :(得分:0)
您可以做几件不同的事情。我将提供一些您可以用来为您提供想法的不同解决方案。
首先,您需要获取该文件夹中所有文件的所有列表。为此,我们需要致电Directory.GetFiles(@"C:\Windows\System32\WDI\LogFiles\StartupInfo");
这将为您提供包含所有文件的字符串数组。在这里,它变得有趣。
您可以通过调用File.GetLastWriteTime
来检查文件的上次写入时间,然后找到写入时间最长的那个。
样品:
var files = Directory.GetFiles(@"C:\Windows\System32\WDI\LogFiles\StartupInfo");
var mostRecentFile = files.Select(file => new
{
File = file,
LastWriteTime = File.GetLastWriteTime(file)
})
.OrderByDescending(x => x.LastWriteTime)
.First();
或者你可以解析文件名。如果文件始终以" SID _"开头。并且它们总是递增,你可以做各种不同的事情来操纵该字符串来获得该数字,并获得最大的值。
我提供了一个代码示例,但是有无数种可能性,例如string.Replace
,正则表达式等。