.NET Core + WMI - 检测新进程时TIME_CREATED错误?

问题描述 投票:0回答:1

.NET Core 应用程序。我正在使用 WMI 检测何时创建新进程,类似于

    WqlEventQuery wqlEventQuery = new WqlEventQuery(string.Format("SELECT * FROM Win32_ProcessStartTrace"));

这似乎工作正常,它会检测我是否打开任何应用程序。但房产

TIME_CREATED
的价值并没有显示出我的预期...... 来自微软

“指示事件发生时间的唯一值 生成的。这是一个 64 位值,表示数量 1601 年 1 月 1 日之后的 100 纳秒间隔。信息位于 协调世界时 (UTC) 格式。 ”

但是,如果我将此时间戳转换为 DateTime,它会给出一个奇怪的值...例如,它检测到启动了一个新进程,并且属性

TIME_CREATED
显示的值是 133598139347539533。但是将其转换为日期时间,它应该给出今天的日期,但它是 24/07/5834...

另外,我发现

DateTime.Now.ToFileTimeUtc()
返回同一纪元(1601)的当前时间戳,所以我尝试过,是的,它给出了预期的结果(类似于 133598169181757776),所以我知道我的计算没问题。 .

有什么想法吗?

.net-core wmi
1个回答
0
投票

我不确定你是如何计算日期的,但我的快速测试显示了正确的日期:

new DateTime(1601, 1, 1) + new TimeSpan(133598139347539533)

new DateTime(1601, 1, 1).AddTicks(133598139347539533)

两者都会导致 [10/05/2024 11:25:34]

可测试的在线小提琴:https://dotnetfiddle.net/xuDNXb

© www.soinside.com 2019 - 2024. All rights reserved.