试下这样
    CString strDllName = "C:\\MsgDll.dll";
 
    LPVOID lpRemoteDllName =  VirtualAllocEx(
        hProcess,          
        NULL,          
        strDllName.GetLength()+sizeof(TCHAR),            
        MEM_COMMIT,
        PAGE_READWRITE           
    );
 
    if (lpRemoteDllName == NULL)
    {
        MessageBox("向目标进程申请内存失败!");
    }
 
    //下面将写入.
    SIZE_T dwWirte;
    BOOL IsWrite = WriteProcessMemory(hProcess,lpRemoteDllName,strDllName.GetBuffer(strDllName.GetLength()),
                      strDllName.GetLength()+sizeof(TCHAR),&dwWirte);
  

解决方案 »

  1.   

    《windows核心编程》上就有一个远程线程注入的例子,在XP上成功,在WIN7上失败。
    原因有很多个:
    1.当前进程的权限问题。
    2.你的程序和dll必须和要注入的进程同为32位或同为64位
    3.win7比XP更安全,这些不安全的API函数CreateRemoteThread在使用上限制更多了,据说CreateRemoteThread只能注入到当前进程创建的进程中。当然也不是说就没办法实现了,办法还是有的,要稍微绕一下路。
    参考:http://blog.csdn.net/wxdvc/article/details/8116193