Как закрыть хэндл чужого процесса?

283
08 июня 2018, 00:20

Какой функцией я могу закрыть этот хэндл в чужом процессе если мне известен его адрес 0x15c?

if (wcsstr(objectName.Buffer, L"\\Sessions\\1\\BaseNamedObjects\\") > 0)
{
    HANDLE pDeHandle;
    DuplicateHandle(processHandle, (HANDLE)handle.Handle, NULL, &pDeHandle, 0, FALSE, DUPLICATE_CLOSE_SOURCE);
    CloseHandle(&pDeHandle);
    system("pause");
}

Код убивает мутекс, но нужный результат получается только после закрытия моей программы, как освободить, что добавить чтобы ненужно было закрывать программу.

Answer 1

Тут пара недочетов

HANDLE DeHandle; /*1. У вас не ссылка а нормальный таки хандл*/
if (DuplicateHandle(processHandle, (HANDLE)handle.Handle /*0x15c*/,
    GetCurrentProcess() /*2.указать*/
   , &DeHandle, 0, FALSE, DUPLICATE_CLOSE_SOURCE)) 
CloseHandle(DeHandle); /*3. Тут не надо & ставить, потому что [1]*/
else {  /* ф-ция не сработала обработать ошибки*/};
system("pause");

И ссылка на DuplicateHandle

READ ALSO
Прохождение интервью по C++ [закрыт]

Прохождение интервью по C++ [закрыт]

Был на собеседовании в одной контореВопросы в виде очень замудренных тестов, где ответ в виде Неопределенное Поведение

239
Эмуляция клавиши мыши в игровом окне

Эмуляция клавиши мыши в игровом окне

Как можно реализовать искусственно нажатую клавишу мыши в окне opengl игры? Может есть какие-либо ссылки на работу с библиотекой opengl, или код

197
Одно событие для одинковых классов [дубликат]

Одно событие для одинковых классов [дубликат]

На данный вопрос уже ответили:

238