我有一个调用的过程CreateProcess.似乎CreateProcess返回非零表示成功.但是,然后立即设置该过程的HANDLE,表示该过程已退出.当我打电话时GetExitCodeProcess,STATUS_DLL_NOT_FOUND然后返回.
我知道DLL丢失了.我甚至知道究竟是哪一个.但是,我不明白的是如何以编程方式解决这个问题.
我注意到Windows将显示一个对话框,说明该进程无法启动,因为它无法找到指定的DLL(屏幕截图:http://www.mediafire.com/view/?kd9ddq0e2dlvlb9).在对话框中,Windows指定缺少哪个DLL.但是,我发现无法以编程方式自行获取该信息.
如果进程无法启动并将返回STATUS_DLL_NOT_FOUND,我如何以编程方式检索目标进程所链接的库名称,该名称无法找到?这样我就可以在错误报告中自动记录在给定安装中DLL似乎丢失或损坏的内容.
简而言之:我想做"Dependency Walker"做同样的事情.
是否有任何Win32 API函数可以枚举EXE和/或DLL文件的依赖项?
是否有任何安全的方法来检测ActiveX类的依赖?(我怀疑这是可能的,但谁知道...)
编辑:我知道可用的工具提供相同的核心功能(Dependency Walker,ProcessExplorer,AQTime,...),但我想创建自己的程序,转储包含所需模块的文本文件.
这不是重复的问题: 如何判断win32应用程序是否使用.NET运行时.
如果给定的exe文件是.net exe文件或常规WIN32/WIN64 exe文件,我怎么能以编程方式找出?
问题不是询问正在运行的进程,而是关于exe文件,而且正如标签所示,不需要用VB.net或C#编写的解决方案.
我需要一个带有签名的函数,例如:
// return true if filename is a exe file for .Net
bool IsExeFileDotNet(LPCTSTR filename)
{
...
}
Run Code Online (Sandbox Code Playgroud)