Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

баг в CreateRemoteThread

1 view
Skip to first unread message

Alexander Andrusenko

unread,
Sep 13, 2006, 11:37:45 AM9/13/06
to
Привет всем.

Есть два процесса на одном компе - клиент и сервер.
Клиент обращается к серверу следующим образом:
1) hProcess=OpenProcess(PROCESS_ALL_ACCESS,...)
2) mem=VirtualAllocEx(hProcess,...)
3) WriteProcessMemory(hProcess,mem,...)
4) CreateRemoteThread(hProcess, 0,0, mem,...)

Пока сервер и клиент работают в одной терминальной сессии - все нормально.
Если запустить их в разных терминальных сессиях - CreateRemoteThread
возвращает 0, а GetLastError() - ERROR_NOT_ENOUGH_MEMORY.

При этом в MSDN сказано:
Terminal Services: Terminal Services isolates each terminal session by
design. Therefore, CreateRemoteThread fails if the target process is in a
different session than the calling process.

Я бы мог поверить сказанному в MSDN, если бы GetLastError() возвращал
ERROR_ACCESS_DENIED, притом в момент вызова OpenProcess, а не в момент
CreateRemoteThread.
А так мне кажется, что это баг, прикрытый отмазкой в документации. Как вы
считаете, правильно ли мне кажется?

На всякий случай уточню ОС, на которой я это тестировал: Windows 2000 Server
+ SP4 + Rollup.


0 new messages