C语言 不能包含 EnumProcessModulesEx



我正在尝试制作一个程序,该程序将遍历活动正在运行的进程列表,找到来自某个可执行文件的进程,然后写入该进程内存。我一直在遵循 msdn 教程,对其进行修改以满足我的需求。我希望能够同时查看 32 位和 64 位进程。为了做到这一点,我想使用EnumProcessModulesEx。我可以从 psapi.h 导入 EnumProcessModules,但 EnumProcessModulesEx 似乎不存在?有谁知道我如何链接到它?

法典:

#include <stdio.h>
#include <windef.h>
#include <Windows.h>
#include <psapi.h>
int main() {
    DWORD processes[1024], size, amount;
    if (!EnumProcesses(processes, sizeof(processes), &size)){
        return 1;
    }
    amount = size / sizeof(DWORD);
    for (int i = 0 ; i < amount ; i++){
        if (processes[i] != 0){
            HANDLE proc = OpenProcess(PROCESS_QUERY_INFORMATION | 
    PROCESS_VM_READ | PROCESS_VM_WRITE, FALSE, processes[i]);
            if (proc != NULL){
                TCHAR name[MAX_PATH] = TEXT("<unknown>");
                HMODULE mod;
                DWORD modSize;
                if (EnumProcessModules(proc, &mod, sizeof(mod), &modSize)){
                    GetModuleFileNameEx(proc, mod, name, 
    sizeof(name)/sizeof(TCHAR));
                }
                else {
                    printf("%in", GetLastError());
                    //ERROR_PARTIAL_COPY 64 Bit
                 }
                printf("%sn", name);
            }
        }
    }
    return 0;
}

我正在使用Clion作为我的ide,它使用cmake来构建。Cmake 脚本:

cmake_minimum_required(VERSION 3.6)
project(Proc)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS}")
find_library (PSAPI Psapi)
set(SOURCE_FILES main.c)
add_executable(Proc ${SOURCE_FILES})
target_link_libraries(Proc PSAPI)

我设法通过卸载 mingw 并安装它的 64 位版本来解决此问题。我想我以前一定安装了一个非常旧的版本。

相关内容

  • 没有找到相关文章

最新更新