我目前正在尝试获取具有pid的程序列表的名称。

该程序以管理员身份运行,但是GetModuleFileNameEx失败,错误代码为5。

我使用OpenProcess(PROCESS_TERMINATE,PROCESS_QUERY_INFORMATION)打开程序,并且启用了SE_DEBUG_PRIVILEGE

===============>>#1 票数:10 已采纳

传递给GetModuleFileNameEx()的进程句柄需要PROCESS_QUERY_INFORMATIONPROCESS_VM_READ访问权限。

这对我有用:

HANDLE h = OpenProcess(PROCESS_QUERY_INFORMATION | PROCESS_VM_READ,
                       FALSE,
                       6088);
if (0 == h)
{
    std::cerr << "OpenProcess() failed: " << GetLastError() << "\n";
}
else
{
    char exe_path[2048] = {};

    if (GetModuleFileNameEx(h, 0, exe_path, sizeof(exe_path) - 1))
    {
        std::cout << exe_path << "\n";
    }
    else
    {
        std::cerr << "GetModuleFileNameEx() failed: " <<
            GetLastError() << "\n";
    }
    CloseHandle(h);
}

但是,正如其他人指出的那样(并且在GetModuleFileNameEx()的文档中也有说明),有更安全的方法来获取此信息:

===============>>#2 票数:0

根据该线程 ,当没有足够的信息返回文件名时,将返回错误。

  ask by jgpt translate from so

未解决问题?本站智能推荐:

5回复

如何获取窗口的可执行文件名称

我尝试获取所有已启动的窗口的可执行文件名称,我的问题是: 我用的方法 我不明白为什么它不起作用。 关于窗口的数据是: -HWND和PROCESSID 错误是:例如: 注意:test.exe是我的可执行文件的名称,但它不是Notepad ++的完整路径....
1回复

使用C ++从我的可执行文件中获取其资源ID的图标索引

我正在尝试使用Visual Studio在C ++中创建GUI应用程序的快捷方式。 我正在使用IShellLink :: SetIconLocation方法创建采用图标索引的链接。 但是问题是,当我只有.res文件中的图标ID时,如何获得该索引?
2回复

通过其路径获取Windows可执行文件的DisplayName

我有一个C ++软件(非托管C ++),其目的是控制客户端计算机上其他应用程序的某些动作并将警报发送到服务器。 一旦执行此操作,软件将获取应用程序exe的路径并发送。 我的修改任务是获取应用程序的DisplayName(就像在“程序和功能”文件夹中一样)并将其发送。 最后,客户端计算机
1回复

从可执行文件获取图标信息?

我正在尝试使用以下API从.exe文件中获取图标: SHGetFileInfoW () SHGetImageList ()并从由此获得的ImageList中,我通过调用GetIcon ()来读取图标。 当机器的颜色深度设置为32位时,我得到32位颜色图标。 问题是,当我将机器的颜色深
4回复

获取正在运行的可执行文件的文件句柄

我试图在我自己正在运行的程序的可执行文件上调用GetFileInformationByHandle。 这意味着我需要获取启动程序的.exe的文件句柄。 有什么办法吗? 失败了,有什么办法可以获取正在运行的可执行文件的nFileIndexHigh和nFileIndexLow?
2回复

流程ID和流程名称

我正在创建一个Windows程序,该程序基本上会扫描系统以查看特定进程是否正在运行。 我有进程名称(AcroRd32.exe),仅此而已。 从我已经读到的最简单的方法中,可以使用CreateToolhelp32Snapshot创建所有进程的快照,然后遍历每个进程以查找进程名称。 我
1回复

可执行文件从中读取的文件中的地址

我确信这是不平凡的,我可能会问一些荒谬的事情。 如果是这样,请告诉我,我将结束。 有没有一种方法可以调试Win32应用程序,这样我就可以查看可执行文件在特定操作期间在给定时间读取的文件中的哪些地址(我的意思是像我自己单击按钮一样,但是从更极端的版本中过滤数据)以查看要读取的文件的确切部分)?
2回复

什么是最小的Windows(PE)可执行文件?

作为编写编译器的先驱,我试图了解Windows(32位)可移植可执行文件格式。 特别是,我想看一个简单的可执行文件示例,该示例除了正确加载,运行和退出外不执行任何操作。 我试过编写和编译一个简单的C main函数,该函数什么也不做,但是生成的.exe约为22KB,包含许多从KERNEL3
1回复

尝试获取客户端进程可执行文件路径时访问拒绝错误

我正在使用作为Windows服务托管的WCF服务,该服务使用命名管道-NamedPipeServerStream (用户特权)在服务器和客户端进程之间建立安全连接。 为了检查客户端进程的真实性,我需要验证客户端进程可执行文件的数字签名,因此我尝试使用其进程ID获取客户端的可执行文件路径。
4回复

如何使用C ++获取有关Windows可执行文件(.exe)的信息

我必须创建一个软件,它将扫描几个目录并提取有关所找到的可执行文件的信息。 我需要做两件事: 确定给定文件是否是可执行文件( .exe , .dll等) - 检查扩展名可能不够好。 获取有关此可执行文件的信息( 公司名称 , 产品名称等)。 我之前从未这样做过,因此