代码之家  ›  专栏  ›  技术社区  ›  Daniel

VC++2008,OpenProcess始终返回错误5(访问被拒绝)

  •  3
  • Daniel  · 技术社区  · 17 年前

    有人知道为什么MSVC++2008在我尝试调用OpenProcess时,总是在GetLastError()上返回错误5,而PROCESS_ALL_访问是我想要的访问权限吗?“进程”\u VM\u READ工作正常。我是这台计算机的管理员,在DEV C++中工作得很好。

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

    3 回复  |  直到 17 年前
        1
  •  7
  •   Michael Burr    17 年前

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

    打开另一进程的句柄 并获得完全访问权限,您可以 特权有关详细信息,请参阅

    请记住,即使您拥有特权,但在大多数情况下,特权是未启用的-必须在尝试使用特权的代码中专门启用它。

        2
  •  4
  •   Michael Burr    17 年前

    另一个可能导致这种情况的原因是Vista的新功能:

    Windows Vista引入受保护的 加强对可持续发展的支持的进程 限制对受保护对象的访问 进程和受保护的线程 过程。

    受保护进程:

    DELETE READ_CONTROL WRITE_DAC WRITE_OWNER

        3
  •  0
  •   Tony Lee    17 年前

    这是什么过程?在另一个用户会话中打开服务或进程可能会返回拒绝访问(5)。另一个会话中的进程将打开进行读取,但您将无法调试它。这是Windbg具有非侵入性连接的一个原因。它跨用户会话工作。您实际上并没有调试。它挂起所有线程并正在读取内存。