gpt4 book ai didi

c++ - C++ 中 OpenProcess 的 Vista/7 编译和 XP/2000 执行问题

转载 作者:行者123 更新时间:2023-11-28 03:56:06 27 4
gpt4 key购买 nike

我一直在使用具有 PROCESS_ALL_ACCESS 权限的 OpenProcess 来实现以下功能:-EnumProcessModules
-GetModuleFileNameEx
-ReadProcessMemory
-WriteProcessMemory
在 Windows Vista/7 上运行良好。但是,在 Windows XP/2000 中,它不会打开带有 PROCESS_ALL_ACCESS 的进程,因为根据 MSDN 库:


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

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

非常感谢。

最佳答案

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

#define _WIN32_WINNT 0x500   // Target Windows 2000
#include <windows.h>

关于c++ - C++ 中 OpenProcess 的 Vista/7 编译和 XP/2000 执行问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3549982/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com