0

所以,我现在已经为此奋斗了 2 天,仍然是同样的错误。我已经用谷歌获得了 300 多个结果,但仍然失败。它一直显示为 HEX,或者根本不起作用。

这没有使用任何外部库,也没有 .net 框架。100% 不依赖。

我已经尝试了 30 多种方法。 TCHAR szExeFileName[MAX_PATH]; GetModuleFileName(NULL, szExeFileName, MAX_PATH);

^ 不起作用;返回十六进制。代码是无效的。

        #include "SharedHeader.h"
    #include <Psapi.h>
    #include "CommandLine_Pres.h"
    #include <TlHelp32.h>
using namespace std;

void filePath()
{
    // Figure out file path of current file
    char cCurrentPath[FILENAME_MAX];
    if(!GetCurrentDir(cCurrentPath, sizeof(cCurrentPath)))
    {
        cout << "error" << endl;
    }
    cCurrentPath[sizeof(cCurrentPath) -1] = '\0';
    cout << cCurrentPath << endl;
    // Get process id, filename
    //cout << GetCommandLine();
    int procId = GetCurrentProcessId();
    SYSTEM_INFO si;
    GetNativeSystemInfo(&si);
    /*
    DOES NOT WORK BELOW [debug]
    HANDLE Handle = OpenProcess(PROCESS_QUERY_INFORMATION | PROCESS_VM_READ, FALSE,GetCurrentProcessId());
    if(Handle)
    {
        TCHAR Buffer[MAX_PATH];
        if(GetModuleFileNameEx(Handle, 0, Buffer, MAX_PATH))
        {

        }
        else
        {

        }
        CloseHandle(Handle);
    }*/
}
4

1 回答 1

0

要获取当前正在运行的进程的地址,您可以使用:

#include <iostream>

int main(int argc, char** argv)
{ 
    std::cout << argv[0] << std::endl; 

    getchar();

    return 0; 
}

或者:

#include <iostream>
#include <windows.h>

int main()
{ 
    char szExeFileName[MAX_PATH];
    GetModuleFileName(NULL, szExeFileName, MAX_PATH);

    std::cout << szExeFileName;

    getchar();

    return 0; 
}
于 2020-03-28T22:30:48.590 回答