首页 > 解决方案 > 为什么 ReadProcessMemory 总是返回 false?

问题描述

不知道为什么,但对于某些 ReadProcessMemory 总是返回 false。始终像这样导入它:

[DefaultDllImportSearchPaths(Kernel32.Path)]
[DllImport(Kernel32.Dll)]
private static extern bool ReadProcessMemory(IntPtr hProcess, IntPtr lpBaseAddress, [Out] byte[] lpBuffer, int nSize, IntPtr lpNumberOfBytesRead);

下面是运行结果ReadProcessMemory(IntPtr HandleWithAllAccess, IntPtr ProcessBaseAddress, byte[] BufferSizeOf500, int TheSize500, IntPtr.Zero);

https://preview.ibb.co/eK8189/Screenshot_890.png

Note: just so people don't start asking unrelated questions, Kernel32 is a class with the dll name and the path where to find it

标签: c#

解决方案


读取操作进入进程的不可访问区域,这就是它返回 false 的原因。感谢 Jeroen Mostert 链接文档,SetLastError从现在开始我将设置为 true。


推荐阅读