gpt4 book ai didi

delphi - 如何确定什么调用了用户访问控制限制?

转载 作者:行者123 更新时间:2023-12-02 05:03:30 25 4
gpt4 key购买 nike

在旨在为我的软件构建互联网软件更新服务的 Delphi 应用程序中,Windows 7 UAC 系统请求用户授权运行 exe。代码中存在以下可能存在争议/风险的区域:

  • 创建命名管道服务器用于通信
  • TCP 用于 FTP 和 HTTP
  • 使用 SHGetSpecialFolderPath API 调用

在这些添加的 UAC 未激活的项目之前,依次删除每个项目(包括所有单元引用),然后以简单的 exe 结尾仍然会导致 UAC 事件 - 因此不可能说出是什么原因导致的。除此之外,Delphi 2007 现在需要以管理员身份启动才能启动应用程序的调试过程。

问题 1:除了在新的 exe 中从头开始之外,我如何才能看到导致此问题的原因 - IOW 是否有我可以检查的日志

问题 2:使用使用authenticode 的签名 exe 是否仍会导致显示 UAC 警报

最佳答案

UAC 无法启动,因为您的应用程序执行了一些管理操作。许多人认为,当未提升的应用程序尝试执行[未提升时会失败但提升后会成功的操作]时,UAC 会询问提升。但事实并非如此。您的应用程序一开始会提升或不提升,并且会保持这种状态。如果它试图做某件事,但没有提升就失败了,那么这件事就会失败。这就是为什么添加和删除代码“仍然会导致 UAC 事件”。

真正“导致 UAC 事件”的是您的 exe 的属性,而不是它包含的代码。其中包括它的名称、您故意应用到它的兼容性内容(通过右键单击并检查某些选项)以及系统为您应用到它的兼容性内容(通常在那些“此应用程序可能无法正确运行”对话框之一之后)。人们常常发现很难确定是哪一个原因造成的。

首先重命名 exe,避免使用诸如“设置”和“更新”之类的词。顺便说一句,您不需要运行它 - 只需在 Windows 资源管理器中的图标上查找盾牌覆盖即可。 (请参阅 http://www.gregcons.com/KateBlog/NamingMattersAnotherCauseOfTheOverlayIcon.aspx )另外右键单击它并选择“属性”,然后查看“兼容性”选项卡。您可能会要求它在那里提升。

关于delphi - 如何确定什么调用了用户访问控制限制?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2386994/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com