Доступ запрещен при попытке выполнить OpenProcess и TerminateProcess

Когда я компилирую и выполняю/отлаживаю свой код из Visual C++ 2010 Express, используя Ctrl + F5, он выполняется нормально.

Когда я пытаюсь выполнить exe-файл, созданный после сборки проекта, он выдает ошибку отказа в доступе при вызове OpenProcess и TerminateProcess.

Любые идеи, почему это может происходить?

Как это можно исправить?


person user1232138    schedule 28.05.2012    source источник
comment
Я работаю от имени администратора и вызываю функции из простого консольного приложения. Также, когда я пытаюсь позвонить ExitWindowsEx, выдает ошибку «Отказано в доступе».   -  person user1232138    schedule 29.05.2012


Ответы (1)


Одна из возможностей состоит в том, что это может быть вызвано UAC. Попробуйте запустить приложение из командной строки с повышенными правами или из проводника, используя опцию «Запуск от имени администратора» в контекстном меню.

person seva titov    schedule 29.05.2012
comment
Я вошел в систему как администратор. - person user1232138; 29.05.2012
comment
@ user1232138 - этого недостаточно. Убедитесь, что вы выбрали опцию «Запуск от имени администратора» и выполните запрос на повышение прав. - person seva titov; 29.05.2012
comment
Дело в том, что я не устанавливал пароль для учетной записи администратора. Поэтому, когда я пытаюсь запустить программу от имени администратора, она отображает какое-то окно с сообщением, в котором говорится что-то вроде «Ошибка входа в систему: ограничение учетной записи пользователя». Возможно ли, что мой компилятор имеет более высокую привилегию, и поэтому, когда я компилирую и выполняю программу, программа наследует более высокую привилегию и выполняется удовлетворительно, чего в противном случае не происходит?? - person user1232138; 29.05.2012
comment
@user1232138 -- MSDN говорит, что OpenProcess требует SeDebugPrivilege. Если вы не работаете с повышенными правами, вам нужно вызвать AdjustTokenPrivileges - person seva titov; 30.05.2012