隐藏进程时遇到的奇怪问题(30分)

  • 主题发起人 主题发起人 sy0116
  • 开始时间 开始时间
S

sy0116

Unregistered / Unconfirmed
GUEST, unregistred user!
我想用以下代码实现先判断系统版本,如果是WIN 9X则用RegisterServiceProcess隐藏进程,但是,当我在Win XP上运行时没有对话框跳出来说“OK”却也提示<br>无法定位程序输入点RegisterServiceProcess于动态链接库KERNEL32.DLL<br>好像if... then...被忽略了<br>而在Win98下运行一切正常<br>=============================================<br>type <br>TOSVersion = (osUnknown, os95, os98, osME, osNT3, osNT4, os2K, osXP); <br><br><br>function GetOS: TOSVersion; <br>var <br>OS: TOSVersionInfo; <br>begin <br>ZeroMemory(@OS,SizeOf(OS)); <br>OS.dwOSVersionInfoSize := SizeOf(OS); <br>GetVersionEx(OS); <br>if (((OS.dwMajorVersion = 4) and (OS.dwMinorVersion = 0)) or<br> &nbsp; ((OS.dwMajorVersion = 4) and (OS.dwMinorVersion = 10)) or<br> &nbsp; ((OS.dwMajorVersion = 4) and (OS.dwMinorVersion = 90))) then<br> &nbsp; begin<br> &nbsp; &nbsp; ShowMessage('ok');<br> &nbsp; &nbsp; RegisterServiceProcess(GetCurrentProcessID, 1);<br> &nbsp; end;<br>end;
 
发现一个更奇怪的问题:在窗体上放一个Button1然后只写一句代码如下,同样,只要一运行就提示:无法定位程序输入点RegisterServiceProcess于动态链接库KERNEL32.DLL,可是我根本还来不及点一下Button1<br>================================================<br>procedure TForm1.btn1Click(Sender: TObject);<br>begin<br>RegisterServiceProcess(GetCurrentProcessId,1);<br>end;
 
这个只能在 win9x上,NT以上取消了,根本就没有这个API
 
现在有多少人用98??好无意义的代码
 
用loadlibrary+getprocaddress改成动态引用就没问题了
 
同意楼上的,因为在XP里没有这个东西,先判断操作系统再动态调用DLL
 
多人接受答案了。
 
后退
顶部