【问题标题】:Why do profilers need administrative privs (on Windows)为什么探查器需要管理权限(在 Windows 上)
【发布时间】:2009-02-12 14:10:51
【问题描述】:

我一直在评估 Windows 上本地 C++ 程序的分析器和内存检查工具,所有这些都希望以管理员权限安装运行。我很少在我的机器上以管理员身份登录。如果我需要安装一些东西或做一些需要管理权限的东西,我会使用 runas,它工作得很好。

探查器要求管理员权限是否合法,或者探查器开发人员只是懒惰?我在此基础上拒绝所有这些工具是不合理的吗?

我在 XP Pro 机器上使用 VS 2005 进行开发。

【问题讨论】:

    标签: c++ visual-studio profiling privileges


    【解决方案1】:

    因为他们必须查看其他进程的内存,这通常是禁忌。

    【讨论】:

    • YMMV,但在 Linux 上,用户特权代码由用户特权调试器调试是很常见的(当然,两者必须在相同的用户 ID 下运行)。
    • 我在工作中使用 AQTime(在 Vista 上运行),它从不要求管理员权限(UAC 已启用)。
    • 有很多工具,例如进程资源管理器,看看其他进程的内存和线程堆栈。
    • OregonGhost- 我查看了 AQTime,它声称需要管理员权限。至少在 XP 上。
    • 以用户身份运行的程序无需管理员权限即可附加到以同一用户身份运行的另一个程序。在 Windows 和 Linux 中都没有。
    【解决方案2】:

    一些 cpu 分析器实际上使用操作系统中断进行统计平均......显然,如果没有特权,他们就无法做到这一点:)

    【讨论】:

      【解决方案3】:

      我一直在阅读这方面的内容,并且我慢慢得出结论,类似分析器的工具通常不需要管理访问权限,但声明您需要它是工具制造商避免所有问题的一种简单方法与权限不足有关。

      所以,我猜他们很懒惰,但也有点务实。

      如果我错了,请纠正我(我不是 Windows 安全模型方面的专家),但我相信处理这种情况的一种方法是仅在安装时要求管理员权限。然后创建一个 ProfilerUsers 用户组并向该组授予任何必要的权限,然后询问应将哪些计算机用户添加到该组。

      我发现的最令人震惊的事情是,许多开发人员一直以管理权限运行。

      【讨论】:

        【解决方案4】:

        听起来像是开发人员的设计选择。他们可能认为在探查内存或动态更改内存中的代码之前请求管理员权限是个好主意,因为某些类型的恶意软件会出现这种行为。

        【讨论】:

          【解决方案5】:

          最可能的解释是它们被实现为专用调试器,使用 Win32 调试 API,如 DebugActiveProcess()。这些功能需要 PROCESS_ALL_ACCESS(如文档中所述),我希望您需要管理员权限。

          IIRC Visual Studio 调试器也不会(正常)工作,除非您在系统上拥有本地管理员权限,至少对于 C++。

          【讨论】:

          • 用户可以将调试器附加到他们的进程中。您只需成为管理员即可附加到另一个用户的进程(或系统进程)。
          猜你喜欢
          • 2016-10-14
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2014-05-31
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多