V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
YUCOAT
V2EX  ›  程序员

如何判断用户在打完windows补丁之后是否重启过?

  •  
  •   YUCOAT · 2013-11-01 11:56:26 +08:00 · 4859 次点击
    这是一个创建于 4044 天前的主题,其中的信息可能已经有所发展或是发生改变。
    我们都知道,Windows在打完补丁很多情况下都需要重启。现在我需要编写一段代码,判断用户在打完Windows补丁后是否重启过。

    或者说,打完补丁之后,Windows到底改了哪些地方,让Windows Update能够在关机和开机更新补丁?
    18 条回复    1970-01-01 08:00:00 +08:00
    manoon
        1
    manoon  
       2013-11-01 13:09:34 +08:00
    重启有个事件日志,类型好像昌65005
    EricBox
        2
    EricBox  
       2013-11-01 13:12:32 +08:00
    YUCOAT
        3
    YUCOAT  
    OP
       2013-11-01 13:22:21 +08:00
    @EricBox 刚刚看了一下,注册表里面PendingFileRenameOperations记录着几个文件,但是这几个文件跟Windows Update没什么联系,这几个文件是都是我刚刚安装的几款软件所残留下来的文件。
    YUCOAT
        4
    YUCOAT  
    OP
       2013-11-01 13:22:35 +08:00
    @manoon 什么意思?
    EricBox
        5
    EricBox  
       2013-11-01 13:31:21 +08:00
    不知道我说的对不对。
    打完补丁应该会有一些正在使用的文件无法更新,需要记录下来待到下次启动的时候替换完成,应该会记录在这里吧。
    YUCOAT
        6
    YUCOAT  
    OP
       2013-11-01 13:40:05 +08:00
    @EricBox 我再试试。刚刚给我的虚拟机打了一些补丁,目前还没有重启,PendingFileRenameOperations里面没有关于补丁的文件。。。不知道是不是因为我打的补丁有点特殊。
    yfdyh000
        7
    yfdyh000  
       2013-11-01 13:42:12 +08:00
    @YUCOAT 把前后的注册表导出,比较差异。
    YUCOAT
        8
    YUCOAT  
    OP
       2013-11-01 14:48:13 +08:00
    @yfdyh000 这。。。。略暴力啊
    YUCOAT
        9
    YUCOAT  
    OP
       2013-11-01 14:48:23 +08:00
    @yfdyh000 不过可以试试!
    YUCOAT
        10
    YUCOAT  
    OP
       2013-11-01 15:31:15 +08:00
    @yfdyh000 还是算了,注册表太大了!
    zzNucker
        11
    zzNucker  
       2013-11-01 15:35:18 +08:00
    1L说过有个重启事件啊 在系统事件记录里
    suriv520
        12
    suriv520  
       2013-11-01 15:50:16 +08:00
    嗯嗯,安装补丁和重启机器,都有系统事件记录的。事件记录包含详细的操作、编号和时间。
    不过这可能得要求电脑的日志服务是打开的(默认)。
    046569
        13
    046569  
       2013-11-01 16:22:01 +08:00
    1.找个需要重启的补丁,越小越好.
    2.丢到安装监视软件里,包含注册表和文件的变更记录.
    手边没环境,要不就帮你试下了.
    vmebeh
        14
    vmebeh  
       2013-11-01 17:14:33 +08:00
    @YUCOAT 有个注册表对比工具,生成快照再对比,好像是叫 RegSnapshot
    YUCOAT
        15
    YUCOAT  
    OP
       2013-11-01 19:10:26 +08:00
    @vmebeh 注册表太大了,不好判断,我可以先试试。
    qingting
        16
    qingting  
       2013-11-01 20:34:08 +08:00
    可以获取开机时间啊。 使用WIN32 API GetTickCount() 就可以获取到开机到当前时刻的毫秒数,和当前时间计算一下就知道开机时间了。
    两个开机时间对比一下,不就知道有没有重启了嘛
    vileer
        17
    vileer  
       2013-11-01 20:37:59 +08:00
    直接把自己写到注册表runonce
    VYSE
        18
    VYSE  
       2013-11-01 21:06:55 +08:00 via Android
    逆向一下windows update service,需要重启的补丁会提示
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1026 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 24ms · UTC 21:48 · PVG 05:48 · LAX 13:48 · JFK 16:48
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.