4

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

我有一个应用程序 (Windows XP),我在其中记录事件,并且记录事件的时间意外更改。

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

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

4

1 回答 1

2

时间更改保存到Windows 事件日志,具体来说,它们保存到安全日志中。现在,这不能保证有效;管理员可以清除安全日志,但这是一种查找 PID 和调用 SetSystemTime 的进程的文件名的方法。

这个答案谈到在系统日志中查找事件;但是,您也应该能够通过查找事件 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>

请注意,进程名称是显式存储的。

于 2013-10-07T18:47:47.450 回答