【问题标题】:Cannot debug Delphi process because of UAC由于 UAC 无法调试 Delphi 进程
【发布时间】:2012-10-15 11:24:39
【问题描述】:

我发现 Win7/X64 机器的有趣问题。

这次我没有遇到 Delphi 6 和 UAC 的问题。 exes 在他们的位置工作,所以我可以使用 Delphi 调试器。

但是今天我在运行项目时遇到错误:“无法创建进程。对于此操作,您需要更高的用户级别”。

如何防止这种副作用? 这是什么原因造成的? 我不明白为什么旧项目运行良好,但这个新项目不是......

感谢您的每一个想法、链接和信息!


附加信息: 通常我使用正常启动的Delphi 6 IDE(没有SysAdmin rigths)。 所以它从不问我“真的吗?”亲切的 UAC 问题。 每个旧项目都可以在 Delphi 6 中使用——我可以构建、运行、调试一切。 这个问题只发生在这个项目上,所以我尽量找出差异来解决问题。 我使用普通目录(“c:\dev\anyproject”),其他人使用“c:\dev\otherproject1..2..n”)。

【问题讨论】:

  • 我认为你需要给我们一些线索。正常启动时可执行请求是否提升?那是你在没有调试器的情况下启动它的时候。
  • 可能项目位于需要提升才能写入的文件夹中。所以检查项目所在的路径。

标签: delphi debugging windows-7 uac


【解决方案1】:

从 Windows 资源管理器启动时,您的应用程序是否请求提升?
它有清单吗?

exe 的名称,如setup.exe,也可能触发提升。查看Installer detection technology 的概要。

非提升的进程无法调试提升的进程。
如果您的应用程序在开始时需要提升,那么您需要运行提升的 IDE 才能对其进行调试。

【讨论】:

  • 是的,当我尝试从 Total Commander/Explorer 启动此应用程序时,它会提示管理员权限。但我不知道为什么?我的其他应用程序与导致提升的此应用程序有什么区别?你能帮我解决这个问题吗,我需要找到什么?
  • 啊啊啊啊,我明白了。问题是我的应用程序名称中包含“updater”子字符串!谢谢,你帮了我很多!!!! ;-)
  • 如果您的更新程序不需要提升,create and embed an application manifestlevel="asInvoker"
  • @durumdara UAC 是在大约 6 年前与 Vista 一起引入的。您今天不应该构建无清单的应用程序。
【解决方案2】:

以管理员身份启动 IDE 应该可以解决问题(上下文菜单中的选项)。 如果没有,您可以在开发时始终禁用 UAC。

【讨论】:

  • 但不要在测试时禁用 UAC:否则您可能会错过最终用户在使用您的应用程序时会遇到的问题。
  • 这将允许您进行调试,但它几乎不能“解决问题”。现在的问题是为什么应用程序需要管理员权限,而开发人员并不期望它。
【解决方案3】:

有许多限制需要管理员权限。 例如:不能直接将数据写入program files目录。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-12-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-06-28
    相关资源
    最近更新 更多