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

[分享] 查询/设置Windows系统安装日期[PECMD源码]

[复制链接]
发表于 2026-10-18 19:40:57 | 显示全部楼层 |阅读模式
本帖最后由 Bluebells 于 2026-10-18 19:55 编辑

看到此版区某"原创" 重置系统安装日期为当前时间 的帖子, 发现有不少人感兴趣, 故尝试用 PECMD 调用 winapi 编写了一个
  1. _SUB GetWindowsInstallDate
  2.     TEAM ENVI-ret %~1=Unknow| ENVI &samDesired=0x20019| ENVI-ptr &phKey=0
  3.     FIND $%&bX64%=1,CALC #&samDesired = %&samDesired% | 0x0100
  4.     CALL $--qd --ret:&ret Advapi32.dll,RegOpenKeyExW,#0x80000002,$SOFTWARE\Microsoft\Windows NT\CurrentVersion,#0,#%&samDesired%,*&phKey
  5.     IFEX $%&ret%=0,
  6.     {
  7.         ENVI?ptr &phKey=&hKey
  8.         TEAM ENVI-int &pType=0| ENVI-int &pSize=0
  9.         CALL $--qd --ret:&ret Advapi32.dll,RegQueryValueExW,#%&hKey%,$InstallDate,#0,*&pType,#0,*&pSize
  10.         IFEX $%&ret%=0,
  11.         {
  12.             ENVI?int &pType=&Type
  13.             IFEX $%&Type%=4,
  14.             {
  15.                 ENVI-int &pData=0
  16.                 CALL $--qd --ret:&ret Advapi32.dll,RegQueryValueExW,#%&hKey%,$InstallDate,#0,*&pType,*&pData,*&pSize
  17.                 IFEX $%&ret%=0,
  18.                 {
  19.                     ENVI?int &pData=&Data
  20.                     ENVI$# &pSystemTime=*8 0
  21.                     CALL $--qd --ret:&ret ntdll.dll,RtlSecondsSince1970ToTime,#%&Data%,*&pSystemTime
  22.                     IFEX $%&ret%<>0,
  23.                     {
  24.                         ENVI$# &pLocalTime=*8 0
  25.                         CALL $--qd --ret:&ret ntdll.dll,RtlSystemTimeToLocalTime,*&pSystemTime,*&pLocalTime
  26.                         IFEX $%&ret%=0,
  27.                         {
  28.                             ENVI$# &pTimeFields=*16 0
  29.                             CALL $--qd ntdll.dll,RtlTimeToTimeFields,*&pLocalTime,*&pTimeFields
  30.                             TEAM ENVI?short &pTimeFields=&Year:0| ENVI?short &pTimeFields=&Month:2| ENVI?short &pTimeFields=&Day:4
  31.                             TEAM CALC -base=10 #&Year = %&&Year%| CALC -base=10 #&Month = %&&Month%| CALC -base=10 #&Day = %&&Day%
  32.                             TEAM ENVI?short &pTimeFields=&Hour:6| ENVI?short &pTimeFields=&Minute:8| ENVI?short &pTimeFields=&Second:10
  33.                             TEAM CALC -base=10 #&Hour = %&&Hour%| CALC -base=10 #&Minute = %&&Minute%| CALC -base=10 #&Second = %&&Second%
  34.                             ENVI-ret %~1=%&Year%/%&Month%/%&Day%, %&Hour%:%&Minute%:%&Second%
  35.                         }
  36.                     }
  37.                 }
  38.             }
  39.         }
  40.         CALL $--qd --ret:&ret Advapi32.dll,RegCloseKey,#%&hKey%
  41.     }
  42. _END

  43. _SUB SetWindowsInstallDate
  44.     TEAM ENVI-ret %~1=0| ENVI$# &pSystemTime=*8 0
  45.     CALL $--qd --ret:&ret ntdll.dll,NtQuerySystemTime,*&pSystemTime
  46.     IFEX $%&ret%=0,
  47.     {
  48.         ENVI-int &pElapsedSeconds=0
  49.         CALL $--qd --ret:&ret ntdll.dll,RtlTimeToSecondsSince1970,*&pSystemTime,*&pElapsedSeconds
  50.         IFEX $%&ret%<>0,
  51.         {
  52.             TEAM ENVI &samDesired=0x20006| ENVI-ptr &phKey=0
  53.             FIND $%&bX64%=1,CALC #&samDesired = %&samDesired% | 0x0100
  54.             CALL $--qd --ret:&ret Advapi32.dll,RegCreateKeyExW,#0x80000002,$SOFTWARE\Microsoft\Windows NT\CurrentVersion,#0,#0,#0,#%&samDesired%,#0,*&phKey,#0
  55.             IFEX $%&ret%=0,
  56.             {
  57.                 ENVI?ptr &phKey=&hKey
  58.                 CALL $--qd --ret:&ret Advapi32.dll,RegSetValueExW,#%&hKey%,$InstallDate,#0,#0x4,*&pElapsedSeconds,#4
  59.                 IFEX $%&ret%=0,ENVI-ret %~1=1
  60.                 CALL $--qd --ret:&ret Advapi32.dll,RegCloseKey,#%&hKey%
  61.             }
  62.         }
  63.     }
  64. _END

  65. ;示例
  66. GetWindowsInstallDate &RetVal
  67. MESS 系统初始安装日期: %&RetVal%

  68. SetWindowsInstallDate &RetVal
  69. FIND $%&RetVal%=1,MESS 成功设置系统安装日期为当前时间!! MESS 设置系统安装日期为当前时间失败!
复制代码
备注:
1. 使用 PECMD 自带的注册表读写命令 REGI 可以节省很多代码, 但我不清楚 PECMD 自带命令有没有执行返回值, 因此没有采用 REGI 命令
2. 上述 PECMD 代码好像很复杂, 如果将它转译成其它编程语言代码会发现其实代码异常简单
3. 在测试"设置Windows安装日期(SetWindowsInstallDate)"前, 建议先备份注册表项 [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion] 的值 InstallDate 的数据

评分

参与人数 1无忧币 +1 收起 理由
2012yiqiudxv + 1 神马都是浮云

查看全部评分

发表于 2026-10-18 19:50:51 | 显示全部楼层
测试测试
回复

使用道具 举报

发表于 2026-10-18 20:29:22 | 显示全部楼层
感谢分享了 学习学习
回复

使用道具 举报

发表于 2026-10-18 20:39:06 | 显示全部楼层
学习了解下。。。
回复

使用道具 举报

发表于 2026-10-18 22:13:22 | 显示全部楼层
感谢分享,辛苦了楼主,谢谢!
回复

使用道具 举报

发表于 2026-10-18 22:46:01 | 显示全部楼层
方法多种多样
回复

使用道具 举报

发表于 2026-10-18 23:05:12 | 显示全部楼层
看看这款脚本性能如何啊,下载试用了
回复

使用道具 举报

发表于 2026-10-19 07:30:08 | 显示全部楼层
这些代码或者脚本怎么使用呢?
回复

使用道具 举报

发表于 2026-10-19 07:47:40 | 显示全部楼层
回复

使用道具 举报

发表于 2026-10-19 08:04:13 | 显示全部楼层
感谢分享了 学习学习
回复

使用道具 举报

发表于 2026-10-19 08:12:47 | 显示全部楼层
感觉应该没那么复杂吧,查询的话一行命令就行了
  1. systeminfo | find "初始安装日期"
复制代码

设置的话就是改个注册表的事情
回复

使用道具 举报

发表于 2026-10-19 08:36:24 | 显示全部楼层
是有个命令行就能查,11楼正解
回复

使用道具 举报

发表于 2026-10-19 09:18:52 | 显示全部楼层
感谢分享
回复

使用道具 举报

发表于 2026-10-19 09:19:14 | 显示全部楼层
感谢分享
回复

使用道具 举报

发表于 2026-10-19 09:32:01 来自手机 | 显示全部楼层
改安装日期有什么用途?
回复

使用道具 举报

发表于 2026-10-19 09:37:32 | 显示全部楼层
PixPin_2026-10-19_09-36-58.png

查询安装日期,好像属性是可以直接查询的。
回复

使用道具 举报

发表于 2026-10-19 09:40:06 | 显示全部楼层
谢谢分享。
回复

使用道具 举报

发表于 2026-10-19 09:42:34 | 显示全部楼层
楼主辛苦了。向楼主致敬!
回复

使用道具 举报

发表于 2026-10-19 10:02:04 | 显示全部楼层
这段代码是 PECMD 脚本,直接保存成 .wcs 文本文件,在 PE 环境里用 PECMD.EXE 加载执行就行,不需要编译。平时在正式系统里查安装日期更省事,看注册表 HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion 下的 InstallDate,或者运行 systeminfo 都行。这段代码真正的价值是演示了 PECMD 里直接调用 WinAPI 的写法,在 PE 下没有 systeminfo 时非常实用。
回复

使用道具 举报

发表于 2026-10-19 10:04:39 | 显示全部楼层
谢谢分享
回复

使用道具 举报

发表于 2026-10-19 11:00:12 | 显示全部楼层
感谢分享
回复

使用道具 举报

发表于 2026-10-19 16:36:23 | 显示全部楼层
回复

使用道具 举报

发表于 2026-10-19 19:48:42 | 显示全部楼层
谢谢分享
回复

使用道具 举报

发表于 2026-10-19 21:19:42 | 显示全部楼层
谢谢分享
回复

使用道具 举报

发表于 2026-10-19 21:29:24 来自手机 | 显示全部楼层
谢谢分享
回复

使用道具 举报

发表于 2026-10-20 06:13:18 | 显示全部楼层
很有意思

评分

参与人数 1无忧币 +5 收起 理由
yyz2191958 + 5

查看全部评分

回复

使用道具 举报

发表于 2026-10-21 13:09:18 | 显示全部楼层
有一点意思
回复

使用道具 举报

发表于 2026-10-23 14:25:37 | 显示全部楼层
这个有什么用途么?改了时间又能如何呀?
回复

使用道具 举报

发表于 2026-10-29 14:13:12 | 显示全部楼层
感谢分享
回复

使用道具 举报

发表于 2026-11-1 16:02:27 | 显示全部楼层
感谢分享
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2026-11-15 12:43

Powered by Discuz! X5.0

© 2001-2026 Discuz! Team.

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