VC ++ 2008,OpenProcess总是返回错误5(拒绝访问)

时间:2008-10-03 23:49:32

标签: c++ visual-studio-2008 visual-c++ openprocess

当我尝试使用PROCESS_ALL_ACCESS作为我所需的访问权限调用OpenProcess时,有谁知道为什么MSVC ++ 2008总是在GetLastError()上返回错误5? PROCESS_VM_READ工作正常。我是这台计算机的管理员,它在Dev C ++中运行良好。

我需要在某处设置选项吗?

3 个答案:

答案 0 :(得分:7)

如果不是在您的凭据下或登录会话中运行的进程,则打开具有完全访问权限的进程可能是一项高权限操作 - 您需要按照MSDN中的这些文档进行操作:

  

打开另一个进程的句柄   并获得完全访问权限   必须启用SeDebugPrivilege   特权。有关更多信息,请参阅   更改令牌中的权限。

请记住,即使您有权限,在大多数情况下也不会启用该权限 - 必须在尝试使用该权限的代码中专门启用该权限。

答案 1 :(得分:3)

可能造成这种情况的另一件事是Vista新手:

  

Windows Vista引入了受保护的版本   加强支持的流程   数字版权管理。系统   限制对受保护的访问   进程和受保护的线程   过程

     

以下标准访问权限   不允许从进程到   受保护的过程:

     

DELETE    READ_CONTROL    WRITE_DAC    WRITE_OWNER

答案 2 :(得分:0)

是哪个过程?在另一个用户会话中打开服务或进程可能会返回拒绝访问(5)。另一个会话中的进程将打开以供读取,但您将无法对其进行调试。这是Windbg具有非侵入性附着的一个原因。它适用于用户会话。你实际上没有调试。它挂起所有线程并正在读取内存。