.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),所以我知道我的计算没问题。 .
有什么想法吗?
我不确定你是如何计算日期的,但我的快速测试显示了正确的日期:
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