RT
windows的ie对url访问历史进行了记录,可以提取,我想请教的是:windows有没有对应用程序的打开关闭情况进行记录?我已经研究了下应用程序日志,除了报错记录以外没有有价值的东西,但是我想记录个应用程序的打开、关闭情况应该不是难事而且windows应该做了吧,不知道有没有哪位大牛研究过这个问题。然后,如果windows没有干这事的话,我想该如何干这事呢?我试验了下,用进程轮询算是最精确的做法,但是开销比较大,用钩子好像钩得不全,有的钩子可以勾到打开钩不到关闭,有的钩子钩到关闭钩不到打开,而且钩子不卸载的话系统简直跟崩溃了一样,不知道还有没有什么好的方法,做个服务行么?唉,总之小弟没啥好点子了,请各位大牛出手相助,谢谢了!

解决方案 »

  1.   

    shell hook可以实现,不过只能拦截到用户通过桌面图标、开始菜单、资源管理器双击打开,以及基于 ShellExecute 打开的程序(比如在WinRAR双击打开程序),拦截不到那些由程序再启动的程序。全部都要拦截得对 CreateProcess API 挂钩。
      

  2.   

    那要看你具体的需求,到底要记录什么。
    关于打开,你可以拦截Explorer.exe的CreateProcess.
    对于关闭,你可以拦截消息。
    至于安装钩子之后系统的状态,那就看你怎么处理的了。