Code:
public void InjectDllFromDisk(IntPtr Proc, String DllPath)
{
IntPtr bytes;
Int32 Lenght = DllPath.Length + 1;
IntPtr Mem = (IntPtr)VirtualAllocEx(Proc, (IntPtr)null, (uint)Lenght, 0x1000, 0x40);
WriteProcessMemory(Proc, Mem, DllPath, (UIntPtr)Lenght, out bytes);
UIntPtr Injector = (UIntPtr)GetProcAddress( GetModuleHandle("kernel32.dll"), "LoadLibraryA");
IntPtr hThread = (IntPtr)CreateRemoteThread(Proc, (IntPtr)null, 0, Injector, Mem, 0, out bytes);
int Result = WaitForSingleObject(hThread, 10 * 1000);
Thread.Sleep(1000);
VirtualFreeEx(Proc, Mem, (UIntPtr)0, 0x8000);
return;
}