更改Kernel32.dll -->> User32.dll因为我刚刚用VC自带的Depends.exe查看了Kernel32.dll文件,根本找不到RegisterServiceProcess函数。倒是在User32.dll中看到一个。

解决方案 »

  1.   

    说真的,我对你的话"我在2000下用VC做了是不会出问题的!"抱有怀疑态度,不知能否把你的VC代码贴出来让我运行一下???
      

  2.   

    将@registerservice:=GetProcAddress        (dllinstance,'RegisterServiceProcess');
    一句中的'RegisterServiceProcess'全改为小写试一下。
      

  3.   

    typedef DWORD(CALLBACK * LPFNDLLFUNC1)(DWORD,DWORD);
    HINSTANCE hKeynellib;
    LPFUDLLFUNC1 lpfndllfunc1;hKernellib=loadLibrary("kernel32.dll");
    if(hKeynellib)
    {
      lpfndllfunc1=(LPFNDLLFUNC1)GetProcAddress (hKernellib,"RegisterServiceProcess");
      if(lpfndllfunc1)
     {
        lpfndlllfunc1(GetCurrentProcessId(),1);
      } 
    }
      

  4.   

    我实在想不通你的VC代码怎么会运行成功??? 下面是我的类似代码,在98下显示"OK",在2000下显示"Failed"  //在任务管理器中注销。
      DWORD (*RegisterServiceProcess)(DWORD,DWORD);  RegisterServiceProcess = (DWORD(*)(DWORD,DWORD))GetProcAddress(
                  GetModuleHandle("Kernel32.dll"),"RegisterServiceProcess");
      if(RegisterServiceProcess != NULL)
      {
        MessageBox(this->Handle,"OK",NULL,MB_OK | MB_APPLMODAL | MB_ICONWARNING);
    //    RegisterServiceProcess(GetCurrentProcessId(),1);//RSP_SIMPLE_SERVICE);
      }
      else
      {
        MessageBox(this->Handle,"Failed",NULL,MB_OK | MB_APPLMODAL | MB_ICONWARNING);
      }
      

  5.   

    注意:
    LoadLibrary不需要带路径的,只要文件名即可,多此一举!
    而且,RegisterServiceProcess只能在Win9x下使用。
      

  6.   

    注意:
    LoadLibrary不需要带路径的,只要文件名即可,多此一举!
    而且,RegisterServiceProcess只能在Win9x下使用。