DLL注入讨论解决方法

DLL注入讨论
C/C++ code

    HANDLE hProcess,hThread;

    PWSTR pszLibFileRemote;

    ModifyPriles();//提权

    hProcess=::OpenProcess(PROCESS_CREATE_THREAD|PROCESS_VM_OPERATION|PROCESS_VM_WRITE,FALSE,dwProcessId);

    if (hProcess==NULL ) return FALSE;

    int cch=lstrlen(pszLibFile)+1;

    int cb=cch*sizeof(WCHAR);

    pszLibFileRemote=(PWSTR)::VirtualAllocEx(hProcess,NULL,cb,MEM_COMMIT, PAGE_EXECUTE_READWRITE);

    if (pszLibFileRemote==NULL) return FALSE;

    DWORD dwWritten; 
    if(!WriteProcessMemory(hProcess,pszLibFileRemote,(PVOID)pszLibFile,cb,&dwWritten))

        return FALSE;

    LPTHREAD_START_ROUTINE pfnThread=(LPTHREAD_START_ROUTINE )::GetProcAddress(::GetModuleHandle(_T("Kernel32")),"LoadLibraryA");

    if (pfnThread==NULL) return FALSE;

    DWORD id;
    hThread=CreateRemoteThread(hProcess,NULL,0,pfnThread,pszLibFileRemote,0,&id);

    if(hThread==NULL) return FALSE;

    WaitForSingleObject(hThread,INFINITE);

    if(pszLibFileRemote!=NULL)

        VirtualFreeEx(hProcess,pszLibFileRemote,0,MEM_RELEASE);

    if(hThread!=NULL)

        CloseHandle(hThread);

    if(hProcess!=NULL)

        CloseHandle(hProcess);




以上代码运行就是不成功,每次在等待远程线程创建的那个函数那暂停,注入到explorer的时候还提示断言错误。
希望做过类似功能的可以提供个完整的源代码给我看看。谢谢了!

------解决方案--------------------
用LoadLibraryA,却往里传入个WCHAR,太不靠谱了吧,呵呵呵
------解决方案--------------------
看下GetLastError那个得到了什么,用LoadLibraryA是没有问题的,我曾经试过。