none
HOOK CreateProcess的问题 RRS feed

  • 问题

  • 写了一个钩子去钩CreateProcess API函数.替换的函数为MyCreateProcessA和MyCreateProcessW

    MyCreateProcessA的函数如下

    BOOL
    WINAPI MyCreateProcessA(
    					  LPCTSTR lpApplicationName,
    					  LPTSTR lpCommandLine,
    					  LPSECURITY_ATTRIBUTES lpProcessAttributes,
    					  LPSECURITY_ATTRIBUTES lpThreadAttributes,
    					  BOOL bInheritHandles,
    					  DWORD dwCreationFlags,
    					  LPVOID lpEnvironment,
    					  LPCTSTR lpCurrentDirectory,
    					  LPSTARTUPINFO lpStartupInfo,
    					  LPPROCESS_INFORMATION lpProcessInformation
    					  )
    {
    	
    	HMODULE hLib = LoadLibrary("kernel32.dll");
    	OriCreateProcess = (_CreateProcess)GetProcAddress( hLib, "CreateProcessA");
    
    	(OriCreateProcess)(lpApplicationName, NULL,NULL,NULL,0,0,NULL,NULL,lpStartupInfo,lpProcessInformation) ;
    //这里已经可以获取到进程的ID了,但是我想同时获取到打开进程的所在的.exe文件的路径,可是通过lpApplicationName或是lpCurrentDirectory只能获取到.exe文件所在的扇区盘符号。为什么??如果我想获取到.exe文件的全路径,该怎么办??
    	return TRUE;
    
    }
    
    

     

    2011年7月14日 3:15

答案

  • 问题解决了,是我在输出信息的时候, LPCWSTR的变量用了MessageBoxA来输出,所以会显示不正确,如果是用 MessageBoxW就正确了
    • 已标记为答案 Shaotine 2011年7月17日 14:08
    2011年7月17日 14:08

全部回复

  • 问题解决了,是我在输出信息的时候, LPCWSTR的变量用了MessageBoxA来输出,所以会显示不正确,如果是用 MessageBoxW就正确了
    • 已标记为答案 Shaotine 2011年7月17日 14:08
    2011年7月17日 14:08
  • 你好,

     

    很高兴能够听到您已经通过自己的努力解决了您的问题。并且感谢您在此与我们分享您的解决方案。这将会对所有与您有类似问题的用户有着极大的帮助。欢迎您能够再次来到MSDN中文论坛提出您的问题。


    Rob Pan [MSFT]
    MSDN Community Support | Feedback to us
    Get or Request Code Sample from Microsoft
    Please remember to mark the replies as answers if they help and unmark them if they provide no help.

    2011年7月18日 3:27