OpenProcess()这个API怎么能成功调用啊?
我是遍历了进程列表,对每个进程OpenProcess();可是总是失败;进程PID为0的进程OpenProcess()87(参数错误);其他的进程的OpenProcess...
我是遍历了进程列表,对每个进程OpenProcess();可是总是失败;进程PID为0 的进程OpenProcess()87(参数错误);其他的进程的OpenProcess()错误代码是5(拒绝访问);还有一个错误代码是6(句柄无效)。网上有说参数错误的,我仔细看了一下也没错啊;还有说进程特权级不够的,我也提高了特权级,可还是同样的错误。真是弄不懂了,有高手能帮帮我吗?感激不尽~~~
展开
3个回答
2011-04-15
展开全部
个 OpenProcess 函数打开一个已存在的进程对象。
HANDLE OpenProcess(
DWORD dwDesiredAccess, // access flag
BOOL bInheritHandle, // handle inheritance option
DWORD dwProcessId // process identifier
);
返回值:如成功,返回值为指定进程的打开句柄。
如失败,返回值为空,可调用GetLastError获得错误代码。
-------------------------------------------------------------
hProcess = OpenProcess(PROCESS_ALL_ACCESS, False, pid) 打开进程
If hProcess Then
ReadProcessMemory hProcess, ByVal &H12F82C, base, 4, 0& 读写进程内存
CloseHandle hProcess 结束进程
End If
----------------------
BOOL ReadProcessMemory( HANDLE hProcess, PVOID pvAddressRemote, PVOID pvBufferLocal, DWORD dwSize, PDWORD pdwNumBytesRead);
参数
hProcess为远程进程的句柄
pvAddressRemote用于指明远程进程中的地址
pvBufferLocal是本地进程中的内存地址
dwSize是需要传送的字节数
pdwNumBytesRead和pdwNumBytesWritten用于指明实际传送的字节数.当函数返回时,可以查看这两个参数的值.
在vb中的使用
VB声明
Declare Function OpenProcess Lib "kernel32" Alias "OpenProcess" (ByVal dwDesiredAccess As Long, ByVal bInheritHandle As Long, ByVal dwProcessId As Long) As Long
说明
打开一个现有进程的句柄
返回值
Long,如执行成功,返回进程句柄;零表示失败。会设置GetLastError
参数表
参数 类型及说明
dwDesiredAccess Long,指定这个句柄要求的访问方法。指定API32.TXT文件中以PROCESS_???开头的一个或多个常数
bInheritHandle Long,如句柄能够由子进程继承,则为TRUE
dwProcessId Long,要打开那个进程的进程标识符
注解
这个函数经常用来打开一个要进行同步的进程
另外,站长团上有产品团购,便宜有保证
HANDLE OpenProcess(
DWORD dwDesiredAccess, // access flag
BOOL bInheritHandle, // handle inheritance option
DWORD dwProcessId // process identifier
);
返回值:如成功,返回值为指定进程的打开句柄。
如失败,返回值为空,可调用GetLastError获得错误代码。
-------------------------------------------------------------
hProcess = OpenProcess(PROCESS_ALL_ACCESS, False, pid) 打开进程
If hProcess Then
ReadProcessMemory hProcess, ByVal &H12F82C, base, 4, 0& 读写进程内存
CloseHandle hProcess 结束进程
End If
----------------------
BOOL ReadProcessMemory( HANDLE hProcess, PVOID pvAddressRemote, PVOID pvBufferLocal, DWORD dwSize, PDWORD pdwNumBytesRead);
参数
hProcess为远程进程的句柄
pvAddressRemote用于指明远程进程中的地址
pvBufferLocal是本地进程中的内存地址
dwSize是需要传送的字节数
pdwNumBytesRead和pdwNumBytesWritten用于指明实际传送的字节数.当函数返回时,可以查看这两个参数的值.
在vb中的使用
VB声明
Declare Function OpenProcess Lib "kernel32" Alias "OpenProcess" (ByVal dwDesiredAccess As Long, ByVal bInheritHandle As Long, ByVal dwProcessId As Long) As Long
说明
打开一个现有进程的句柄
返回值
Long,如执行成功,返回进程句柄;零表示失败。会设置GetLastError
参数表
参数 类型及说明
dwDesiredAccess Long,指定这个句柄要求的访问方法。指定API32.TXT文件中以PROCESS_???开头的一个或多个常数
bInheritHandle Long,如句柄能够由子进程继承,则为TRUE
dwProcessId Long,要打开那个进程的进程标识符
注解
这个函数经常用来打开一个要进行同步的进程
另外,站长团上有产品团购,便宜有保证
展开全部
听说pid为0的进程是不允许被打开的
其他的说你提权了,确定提权成功么?有时候操作系统的用户就没有这个权限的话是没有办法提权的
其他的说你提权了,确定提权成功么?有时候操作系统的用户就没有这个权限的话是没有办法提权的
更多追问追答
追问
应该提权成功了吧,提权的错误代码为零,这就是成功了吧。我的系统是 XP,编译环境是VS2008.请问这是什么情况呢?
追答
呵呵,这个我就不确定了,没有代码,也只能是猜测了
本回答被提问者和网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
没有权限
没有权限
有没有邮箱啊
我发给你一个我自己写的例子
加我扣扣也行:453867443
没有权限
有没有邮箱啊
我发给你一个我自己写的例子
加我扣扣也行:453867443
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询