找回密码
 注册
搜索
系统gho:最纯净好用系统下载站投放广告、加入VIP会员,请联系 微信:wuyouceo
查看: 155|回复: 5

[原创] 重置系统安装日期为当前时间

[复制链接]
发表于 2 小时前 | 显示全部楼层 |阅读模式
  1. @echo off
  2. setlocal EnableExtensions EnableDelayedExpansion
  3. chcp 65001 >nul

  4. :: 将系统安装日期/时间重置为当前时刻
  5. :: 对应程序功能:HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion
  6. ::   InstallDate = REG_DWORD  (Unix 时间戳,秒)
  7. ::   InstallTime = REG_QWORD  (Windows FILETIME,UTC)

  8. echo ========================================
  9. echo   修改系统安装日期为今天
  10. echo ========================================
  11. echo.

  12. net session >nul 2>&1
  13. if errorlevel 1 (
  14.     echo [错误] 权限不足,请右键“以管理员身份运行”。
  15.     pause
  16.     exit /b 1
  17. )

  18. set "InstallDate="
  19. set "InstallTime="
  20. for /f "usebackq tokens=1,2 delims=|" %%a in (`powershell -NoProfile -Command "$ft=[DateTime]::UtcNow.ToFileTimeUtc(); $unix=[uint32](($ft - 116444736000000000) / 10000000); Write-Output ($unix.ToString() + '|' + $ft.ToString())"`) do (
  21.     set "InstallDate=%%a"
  22.     set "InstallTime=%%b"
  23. )

  24. if not defined InstallDate (
  25.     echo [错误] 无法计算时间戳(PowerShell 可能不可用)。
  26.     pause
  27.     exit /b 1
  28. )
  29. if not defined InstallTime (
  30.     echo [错误] 无法计算 FILETIME。
  31.     pause
  32.     exit /b 1
  33. )

  34. echo 将写入(64 位注册表视图):
  35. echo   InstallDate = !InstallDate!  ^(REG_DWORD^)
  36. echo   InstallTime = !InstallTime!  ^(REG_QWORD^)
  37. echo.

  38. set "RegKey=HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion"

  39. reg add "%RegKey%" /v InstallDate /t REG_DWORD /d !InstallDate! /f /reg:64 >nul
  40. if errorlevel 1 (
  41.     echo [错误] 写入 InstallDate 失败。
  42.     pause
  43.     exit /b 1
  44. )

  45. reg add "%RegKey%" /v InstallTime /t REG_QWORD /d !InstallTime! /f /reg:64 >nul
  46. if errorlevel 1 (
  47.     echo [错误] 写入 InstallTime 失败。
  48.     pause
  49.     exit /b 1
  50. )

  51. :: 读回校验
  52. set "ReadDate="
  53. set "ReadTime="
  54. for /f "tokens=3" %%v in ('reg query "%RegKey%" /v InstallDate /reg:64 2^>nul ^| findstr /i "InstallDate"') do set "ReadDate=%%v"
  55. for /f "tokens=3" %%v in ('reg query "%RegKey%" /v InstallTime /reg:64 2^>nul ^| findstr /i "InstallTime"') do set "ReadTime=%%v"

  56. :: REG_QWORD 读回多为十六进制,转十进制再比对
  57. set "ReadTimeDec="
  58. if defined ReadTime (
  59.     for /f "usebackq delims=" %%n in (`powershell -NoProfile -Command "try { [uint64]'!ReadTime!'.Trim() } catch { 0 }"`) do set "ReadTimeDec=%%n"
  60. )

  61. set "ReadDateDec="
  62. if defined ReadDate (
  63.     for /f "usebackq delims=" %%n in (`powershell -NoProfile -Command "try { [uint32]'!ReadDate!'.Trim() } catch { 0 }"`) do set "ReadDateDec=%%n"
  64. )

  65. if "!ReadDateDec!"=="!InstallDate!" if "!ReadTimeDec!"=="!InstallTime!" (
  66.     echo [成功] 重置成功。
  67.     echo   读回 InstallDate = !ReadDateDec!
  68.     echo   读回 InstallTime = !ReadTimeDec!
  69.     echo.
  70.     pause
  71.     exit /b 0
  72. )

  73. echo [警告] 写入后校验不一致。
  74. echo   期望 InstallDate=!InstallDate!  读回=!ReadDate! ^(!ReadDateDec!^)
  75. echo   期望 InstallTime=!InstallTime!  读回=!ReadTime! ^(!ReadTimeDec!^)
  76. echo.
  77. pause
  78. exit /b 1
复制代码


成品批处理:
链接:https://pan.quark.cn/s/b53071e04f8c
发表于 2 小时前 | 显示全部楼层
支持原创!
回复

使用道具 举报

发表于 1 小时前 | 显示全部楼层
有些主板的BIOS时间不对,安装系统后不会第一时间同步正确时间,如果直接运行,也是错误的时间,建议联网自动更新时间后再写入
https://wuyou.net/forum.php?mod=viewthread&tid=451443
回复

使用道具 举报

发表于 1 小时前 | 显示全部楼层
感谢分享,不知道什么情况需要用这个
回复

使用道具 举报

发表于 1 小时前 | 显示全部楼层
是不是就可以无限试用了

点评

纯娱乐吧,无限试用应该不行,软件会记录安装到电脑的时间节点,一般放在注册表。  详情 回复 发表于 半小时前
回复

使用道具 举报

 楼主| 发表于 半小时前 | 显示全部楼层
topdzw 发表于 2026-8-12 11:17
是不是就可以无限试用了

纯娱乐吧,无限试用应该不行,软件会记录安装到电脑的时间节点,一般放在注册表。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|捐助支持|无忧启动 ( 闽ICP备05002490号-1|闽公网安备35020302032614号 )

GMT+8, 2026-8-12 12:19

Powered by Discuz! X5.0

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表