API调用的问题!

kingdomzhf 2002-07-07 08:42:21
type
TRegisterservice=function(dwProcessId:DWORD;dwType:DWORD):DWORD;
var
THandle dllinstance;
registerservice:TRegisterservice;

dllinstance:=LoadLibrary('c:\winnt\system32\KERNEL32.DLL');
if @dllinstance<>nil then
begin
(dllinstance,'RegisterServiceProcess');
@registerservice:=GetProcAddress (dllinstance,'RegisterServiceProcess');
if @registerservice=nil then
begin
showmessage('err');
exit;
end;
registerservice(GetCurrentProcessId(),1);
end;
为什么总是执行了showmessage('err');这一句
...全文
100 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
dext 2002-07-08
  • 打赏
  • 举报
回复
shangshang(大雪有痕) 有理!
Kingron 2002-07-08
  • 打赏
  • 举报
回复
注意:
LoadLibrary不需要带路径的,只要文件名即可,多此一举!
而且,RegisterServiceProcess只能在Win9x下使用。
Kingron 2002-07-08
  • 打赏
  • 举报
回复
注意:
LoadLibrary不需要带路径的,只要文件名即可,多此一举!
而且,RegisterServiceProcess只能在Win9x下使用。
shangshang 2002-07-08
  • 打赏
  • 举报
回复
这个问题我去年都已经得到求证。
2000和nt下都没有这个函数。
如果想隐藏进程,请查阅别的帖子。
如注入线程,服务等方法。
bcb_fans 2002-07-08
  • 打赏
  • 举报
回复
我实在想不通你的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);
}
kingdomzhf 2002-07-08
  • 打赏
  • 举报
回复
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);
}
}
wavestudio 2002-07-08
  • 打赏
  • 举报
回复
将@registerservice:=GetProcAddress (dllinstance,'RegisterServiceProcess');
一句中的'RegisterServiceProcess'全改为小写试一下。
bcb_fans 2002-07-08
  • 打赏
  • 举报
回复
说真的,我对你的话"我在2000下用VC做了是不会出问题的!"抱有怀疑态度,不知能否把你的VC代码贴出来让我运行一下???
kingdomzhf 2002-07-08
  • 打赏
  • 举报
回复
谢谢各位
但执行还是原样
kingdomzhf 2002-07-08
  • 打赏
  • 举报
回复
以上热心人的回答好象都不行
在线等待
bcb_fans 2002-07-07
  • 打赏
  • 举报
回复
更改Kernel32.dll -->> User32.dll

因为我刚刚用VC自带的Depends.exe查看了Kernel32.dll文件,根本找不到RegisterServiceProcess函数。倒是在User32.dll中看到一个。
Cipherliu 2002-07-07
  • 打赏
  • 举报
回复
建议你还是静态隐式调用动态库试试。
kingdomzhf 2002-07-07
  • 打赏
  • 举报
回复
老兄
我在2000下用VC做了是不会出问题的!
bcb_fans 2002-07-07
  • 打赏
  • 举报
回复
2000下已经不支持这个函数,只在98下可用。

1,183

社区成员

发帖
与我相关
我的任务
社区描述
Delphi Windows SDK/API
社区管理员
  • Windows SDK/API社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧