有人知道 Windows 在哪里记住夏令时调整的“实际状态”吗?
我的问题与信息亭系统有关,其中整个硬盘都处于“写保护”状态。(我说的是 EWF 写过滤器,这不是硬件写保护。但所有写入的内容都存储在 RAM 中,当计算机关闭时将被遗忘)。
当 Windows 将夏令时改为冬令时(夏令时)或反过来时,它必须记住已经进行了这种转变。否则每次计算机启动时它都会改变时间。我试图为我的系统解决这个问题。
我想在时间改变时手动将此信息写入硬盘(基于文件的写入过滤器)。但我找不到存储该信息的文件或注册表项。以前有人解决过这个问题吗?
问候
编辑:为了更清楚起见:我想防止写过滤系统在每次重新启动时在日期大于最新的夏令时转换时改变时间。Windows 必须在某处有一个标记/标志/文件,以便记住“我已经进行了转换”。
答案1
可以在这里找到 -
System Key: HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\TimeZoneInformation
Value Name: DynamicDaylightTimeDisabled
Data Type: REG_DWORD
Value Data: 0
net stop w32time && net start w32time
在 cmd 中更改此项后,您可能需要重新启动 w32time 服务
答案2
计算机时间管理和嵌入式系统(标准 7 SP1) https://msdn.microsoft.com/en-US/library/ff794720(v=winembedded.60).aspx
默认情况下,Microsoft Windows 假定 CMOS 时钟中存储的日期/时间是本地时间。由于默认日期/时间是本地时间,因此必须定期调整 CMOS 时钟,以考虑 DST 和标准时间之间的转换(当 DST 适用于给定时区配置时)。这与其他操作系统形成对比,其他操作系统可能假定 CMOS 时钟中存储的日期/时间是 UTC。CMOS 时钟不存储与时区或 DST 相关的信息。因此,当启用写入过滤器或在单个系统上安装和使用多个操作系统时,这可能会产生问题。”
CMOS时钟自动调整:
“当调整 CMOS 时钟时,ActiveTimeBias 注册表项也将被调整以反映用于配置 CMOS 时钟的新值。”
好吧,这就是我的答案的解决方案。每年两次,Windows 都会认识到它应该重新配置时钟,因为它承认 ActiveTimeBias 不能满足需求:
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\TimeZoneInformation]
"ActiveTimeBias"=dword:ffffff88
0xffffff88 = 2^32 -120minutes = -2h
UTC - (-120 minutes) = Local Time
(我有 GMT+1,相当于 UTC +1h 和夏令时 =+1h)
UTC + Bias + (DST?1:0)*DaylightBias = UTC + ActiveTimeBias = LocalTime
如果此公式不成立:则 Windows 将更正时钟并重写 ActiveTimeBias。到目前为止,这是我长期以来无法解决的问题的答案。
此时我可能需要修复 ActiveTimeBias,但:有一个注释和 Boot-Sequence 的图片 https://msdn.microsoft.com/en-US/library/ff794720(v=winembedded.60).aspx@ “CMOS时钟自动调整”中规定:
“因此,当启用写入过滤器(针对系统卷)时,记录 CMOS 时钟已更新所需的注册表更改不会保留。同样,您无法使用注册表过滤器来解决该问题,因为注册表过滤器在启动顺序中启用得不够早,无法防止在先前调整时钟后对其进行调整。”
这让我得出结论,我是不是找错了 Bug?好吧,我有一些 Bug,XP-Systems
也许只有他们才有这个问题。微软可能在早期版本中存在,fixed the Time-Bug
但Windows 7 Embedded
没有。我会密切关注这一点。否则这个答案就是错误的,我必须寻找系统这种奇怪行为的另一个原因。