windows – 谁改变了时间?

我知道Win32 API中的WM_TIMECHANGE消息,但是有可能找出哪个应用程序或进程正在改变时间吗?

我有一个应用程序(Windows XP),我正在记录事件,事件记录的时间是意外更改.

我已经检查过:夏令时调整已关闭,并且还会关闭与互联网时间服务器的自动同步.

Windows操作系统中是否有可以设置系统时间的进程(DST更改和NTP除外)?

最佳答案 时间更改保存到
Windows Event Log,具体而言,它们已保存到安全日志中.现在,这不能保证工作;管理员可以清除安全日志,但这是一种查找PID和调用SetSystemTime的进程的文件名的方法.

This answer讨论在系统日志中查找事件;但是,你也应该能够通过查找事件ID 4616在安全日志中找到它.我在这里添加了一个示例记录(编辑了各种位):

<Event xmlns="http://schemas.microsoft.com/win/2004/08/events/event">
<System>
  <Provider Name="Microsoft-Windows-Security-Auditing" Guid="{54849625-5478-4994-A5BA-3E3B0328C30D}" /> 
  <EventID>4616</EventID> 
  <Version>1</Version> 
  <Level>0</Level> 
  <Task>12288</Task> 
  <Opcode>0</Opcode> 
  <Keywords>0x8020000000000000</Keywords> 
  <TimeCreated SystemTime="2013-10-07T18:55:08.999738200Z" /> 
  <EventRecordID>29419283</EventRecordID> 
  <Correlation /> 
  <Execution ProcessID="4" ThreadID="5460" /> 
  <Channel>Security</Channel> 
  <Computer>some computer ID</Computer> 
  <Security /> 
</System>
<EventData>
  <Data Name="SubjectUserSid">S-SID_REDACTED</Data> 
  <Data Name="SubjectUserName">UserName</Data> 
  <Data Name="SubjectDomainName">DOMAIN</Data> 
  <Data Name="SubjectLogonId">0xBADDFOOD</Data> 
  <Data Name="PreviousTime">2013-10-07T18:55:08.996254000Z</Data> 
  <Data Name="NewTime">2013-10-07T18:55:09.000000000Z</Data> 
  <Data Name="ProcessId">0xPID</Data> 
  <Data Name="ProcessName">C:\Windows\System32\dllhost.exe</Data> 
</EventData>
</Event>

请注意,流程名称是显式存储的.

点赞