CreateRemoteThread возвращает ERROR_ACCESS_DENIED (5) на win7 64 бит

Как я могу решить эту проблему? код работает нормально, так как я тестировал его на 32-битном компьютере, но мой 64-битный компьютер возвращает эту ошибку с помощью getlasterror ();

что я могу сделать, чтобы это исправить?

0

Решение

Частичная информация:

Когда я работал с CreateRemoteThread на Win2000 все работало нормально, за исключением случаев, когда я запускал удаленные потоки в процессах, которые принадлежали к различным сеансам терминального сервера. На Win2003 (и вкл.) Все системные процессы работают в сеансе TS 0, который отличается от интерактивного сеанса, в который вы в данный момент вошли. В то время мне не удалось решить проблему границы сеанса TS. Это то, что вам может понадобиться проверить в первую очередь.

Скорее всего, это не проблема 32/64 бит, а какая-то проблема безопасности, требующая специальных привилегий и / или разрешений.

0

Другие решения

Я собираюсь предположить, что ваш целевой процесс — это управляемый исполняемый файл, скомпилированный для «Любого процессора» …

Если так, то когда вы запускаете этот exe-файл в 64-битной Windows, он JIT компилируется в 64-битный код и, таким образом, становится 64-битным процессом.

Затем вы не можете вызвать CreateRemoteThread для него из 32-разрядного процесса.

Тот же Managed exe, запущенный на 32-битной Windows, будет JIT к 32-битному коду, и, следовательно, будет работать.

Если это так, и вы являетесь автором рассматриваемого Managed exe, перестройте его для x86.

0

По вопросам рекламы [email protected]