Как я могу решить эту проблему? код работает нормально, так как я тестировал его на 32-битном компьютере, но мой 64-битный компьютер возвращает эту ошибку с помощью getlasterror ();
что я могу сделать, чтобы это исправить?
Частичная информация:
Когда я работал с CreateRemoteThread
на Win2000 все работало нормально, за исключением случаев, когда я запускал удаленные потоки в процессах, которые принадлежали к различным сеансам терминального сервера. На Win2003 (и вкл.) Все системные процессы работают в сеансе TS 0, который отличается от интерактивного сеанса, в который вы в данный момент вошли. В то время мне не удалось решить проблему границы сеанса TS. Это то, что вам может понадобиться проверить в первую очередь.
Скорее всего, это не проблема 32/64 бит, а какая-то проблема безопасности, требующая специальных привилегий и / или разрешений.
Я собираюсь предположить, что ваш целевой процесс — это управляемый исполняемый файл, скомпилированный для «Любого процессора» …
Если так, то когда вы запускаете этот exe-файл в 64-битной Windows, он JIT компилируется в 64-битный код и, таким образом, становится 64-битным процессом.
Затем вы не можете вызвать CreateRemoteThread для него из 32-разрядного процесса.
Тот же Managed exe, запущенный на 32-битной Windows, будет JIT к 32-битному коду, и, следовательно, будет работать.
Если это так, и вы являетесь автором рассматриваемого Managed exe, перестройте его для x86.