我一直在使用process_all_access权利来用于以下功能:-enumprocessModules
-getModuleFileNameEx
- 阅读ProcessMemory
-writeProcessMemory
在Windows Vista/7上正常工作。但是,在Windows XP/2000中,它不会使用Process_all_access打开该过程,因为根据MSDN库:


Windows Server 2008和Windows Vista上的Process_all_Access标志的大小增加了。如果在Windows Server 2003或Windows XP/2000上运行了针对Windows Server 2008和Windows Vista编译的应用程序,则Process_all_all_access标志太大了,并且指定此标志的功能在ERROR_ACCESS_DENIED中失败。为避免此问题,请指定操作所需的最小访问权限集。如果必须使用Process_all_Access,请将_WIN32_WINNT设置为您应用程序针对的最小操作系统(例如,#Define _WIN32_WINNT _WINNT _WIN32_WINNT_WINXP)

我不熟悉使用#Define设置最小操作系统。在尝试了上面列出的功能的几种替代访问权限的组合之后,我都没有运气,我问某人是否可以向我展示如何使用#Define定义最小操作系统(上面的示例不起作用)和/或/或哪个过程权限这些功能需要。

非常感谢。

有帮助吗?

解决方案

找到您的位置 #include <windows.h> 指令,使它看起来像这样:

#define _WIN32_WINNT 0x500   // Target Windows 2000
#include <windows.h>
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top