比如在xp下,如果你非法关机,开机后,在windows xp进度条过了以后,windows会自动调用chkdisk来运行的!
请问这个时候要如何能调出自己做的一个a.exe来进行运行!
是需要修改哪个注册表项吗?还是windows有提供这样的借口,我直接在重启电脑前注册下就可以了?

解决方案 »

  1.   

    一个非常可行的方案就是:
    把你写的程序该名称chkdisk.exe,然后替换system32目录下的同名文件,这样就行了
    其他的方法,可能要汇编操作系统代码才能够知道,反正我不知道
      

  2.   

    我这里只是那chkdsk打一个比方而已,呵呵!就是想在这点时刻运行我的一个程序,并非一定是chkdsk.exe呵呵。
    你的方法很容易被MS批的 :)
      

  3.   

    那个不是chkdsk,是autocheck
    HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager
    里面的BootExecute和Execute,BootExecute在Execute前面执行,由smss.exe创建这些进程
    你的程序必须在system32文件夹,子系统必须是native,不能使用任何win32api,只能使用ntdll.dll的api
    你的程序在用户模式运行
      

  4.   

    如果用微软的link.exe,指定/subsystem:native和ntdll.lib
    入口点要规定为以下格式
    typedef struct {
           ULONG            Unknown[21];
           UNICODE_STRING   CommandLine;
           UNICODE_STRING   ImageFile;
    } ENVIRONMENT_INFORMATION, *PENVIRONMENT_INFORMATION;typedef struct {
           ULONG                     Unknown[3];
           PENVIRONMENT_INFORMATION  Environment;
    } STARTUP_ARGUMENT, *PSTARTUP_ARGUMENT;long __stdcall NtProcessStartup(PSTARTUP_ARGUMENT p)
    {
    }
      

  5.   

    果然是这个,真是非常感谢!不过还有一大堆事情要做,貌似看到网上说原生态API是没有公开的文档的啊?
      

  6.   

    原生态API..............
    ntddk.h,msdn里面有一部分
    有一个叫windows nt/2000 native api reference的收录了很多
      

  7.   

    你可以在任何时候用RtlCreateUserProcess创建一个native exe的进程
    再加上CsrClientCallServer就可以创建win32进程
      

  8.   

    谢谢 Lactoferrin! 是原生应用程序可以调用的Api!称呼错了,呵呵