1,设置时钟检查该键值是否被修改(没必要这么做)2,启动计算机的时候检查,在run里面加一个*.vbs脚本或者*.js脚本即可,I LOVE YOU病毒就是这么做的。

解决方案 »

  1.   

    windows系统允许程序用文件变化通知:
    FindFristChangeNotifiction()/FindNextChangeNitifiction()
    监视某些文件的变化情况。
    是不是那个程序用它监视了user.dat和system.dat文件?
      

  2.   

    系统允许应用程序用FindFirstChangeNotifiction/FindNextChangeNotifiction函数监视一个或一些文件信息的变化情况。
    我想,是不是那个程序监视了user.dat和system.dat文件的变化,如果改动了就把原键值再写入一遍。
      

  3.   

    如果是窗口字类化,其实就是用指定的消息处理函数代替原窗口的消息处理函数。
    比如已经写好了SubclassProc()
    LRESULT CALLBACK SubclassProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam);
    就可以用:
    WNDPROC g_wpOrigProc = NULL;   //定义为全局变量
    以下在某个函数中:
    g_wpOrigProc = SubclassWindow(g_hWnd, SubclassProc);//这是一个宏:实际上扩展后是g_wpOrigProc = SetClassLong(g_hWnd, GCL_WNDPROC, SubclassProc);SubClassProc这样实现,一般子类化的目的是改进窗口类的性能而不是重新实现它,所以末尾调用了保存下来的的窗口原消息处理函数。
    LRESULT CALLBACK SubclassProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
    {
       switch (uMsg)
       {
         ... //重载你要附加处理的消息
       }
       return CallWindowProc(g_wpOrigProc, hWnd, uMsg, wParam, lParam);
    }与子类化相似的一个概念是超类化,其实和子类化很相似。不同的是,如果要改变很多窗口的行为,字类化要一个一个SubclassWindow,不方便。而超类化就是重新注册一个新窗口类。让它的类参数保持和原窗口类相同,但是用自定义的SubclassProc代替原来的WindowProc,(要取得原来的类参数,必须使用原窗口类隐藏的创建一个窗口)。这样用这个新窗口类创建的窗口就会都拥有扩展后的原窗口功能。
      

  4.   

    系统允许应用程序用FindFirstChangeNotifiction/FindNextChangeNotifiction函数监视一个或一些文件信息的变化情况。
    我想,是不是那个程序监视了user.dat和system.dat文件的变化,如果改动了就把原键值再写入一遍。
      

  5.   

    vcbase上有篇文章就运用VXD技术来隐藏注册表中的某个特殊的键值,同理也应当能够完成你所说的功能吧?!