【问题标题】:are delphi 2010 programs capable of tackling vista/win7 UAC by default默认情况下,delphi 2010 程序是否能够处理 vista/win7 UAC
【发布时间】:2011-03-25 22:15:02
【问题描述】:

如果您在 D2010 中编译程序,则会自动生成清单 .res 文件。它是否默认包含在您的程序中?或者您必须自己包含它?如果是,您将获得什么级别的特权?我的程序修改了一个注册密钥,它是否能够在不修改 .res 文件的情况下这样做?如果没有我需要做哪些修改?
附带问题:是否有组件/可以像 delphi 2010 一样在我的 delphi 7 和 delphi 2007 项目中自动生成/包含 .res 文件的专家(最好是免费的)?
编辑:忘了说我没有 win7 或 vista 也没有我用过它们吗
edit2:我已经包含了一个清单文件,以防万一跟随this tutorial,但本教程只讨论Windows vista,而不是7 中的.xml(manifest) 文件本教程使我的应用程序也能够处理 win7 UAC
edit3 如果我包含我自己的清单文件并且 delphi 默认也包含它,这将生成 2 个清单文件(1 个具有管理员权限和第二个没有)这会导致任何问题/不可预测的行为

【问题讨论】:

  • 为什么您的程序需要修改管理级别的注册表项?如果您的程序需要这样做,那么它在较旧的 Windows 版本上运行也会遇到问题,除非您的客户让他们的所有用户都以管理权限运行,这将是愚蠢的。此外,如果您要支持较新版本的 Windows,购买一份副本是值得的,这样您就可以在您声称支持的平台上测试您的软件。
  • @rob kennedy:情况不是你想的那样,实际上我得到了实习机会,我的第一次面试很顺利,但他们要求我提交一个演示程序,他们要求的一件事是我的程序应该能够在每次 Windows 启动时运行我的解决方案是修改“Software\Microsoft\Windows\CurrentVersion\Run”以使其在 Windows 启动时启动我担心如果他们在 windows7 上以普通用户帐户对其进行测试我软件会失败:(
  • 如果您在 HKey_Current_User 中修改该注册表设置,您应该没有任何问题。或者,如果您将程序的快捷方式放在“开始”菜单的“启动”文件夹中,也应该可以。我认为如果程序的其余职责不需要它,那么对您的程序要求管理员权限会更糟糕。此外,我相信您可以在提交程序时告诉他们您无法访问 Windows 7,因此您无法在那里进行测试;对于学生来说,这是一个完全可以理解的情况。他们将改为在 Windows XP 上对其进行测试。
  • “如果你修改 HKey_Current_User 中的注册表设置,你应该不会有任何问题”如果我这样做 UAC 不会弹出或者它仍然会弹出? “或者,如果您在启动文件夹中放置程序的快捷方式”之前尝试过,但每当我这样做时,我的防病毒软件说可能程序的行为就像木马一样,删除它并创建一个备份副本“我相信你可以提交程序时告诉他们您无权访问 Windows 7”,他们的另一个要求是我的程序应该在 xp、vista 和 7 上运行。

标签: delphi delphi-2010 manifest


【解决方案1】:

delphi 生成的清单为您的进程提供最低权限(顺便说一下,这是默认权限)。

您必须修改清单文件以使其请求权限以在管理权限下运行(称为提升)。

具有标准权限的应用程序应在不提升权限的情况下读取/写入HKEY_CURRENT_USER

访问%programfiles%HKEY_LOCAL_MACHINE 需要提升。 (不太确定其他注册表配置单元)

这是一个 PDF 文件,可以帮助您完成您的工作。

http://pascalfonteneau.developpez.com/articles/delphi/vista/uac/VistaUACandDelphi.pdf

【讨论】:

  • 我认为您应该禁用运行时主题(或删除 XPMan 引用),但我不是 100% 确定,真的。您可以通过禁用 Delphi 的清单来检查,嵌入您自己的并检查应用程序是否正确主题
  • 对于第三次编辑,您应该在项目选项中禁用运行时主题支持,并自己提供一个清单作为包含所需权限和运行时主题的资源。除此之外,我记得有一个 Delphi 2009 的 IDE 专家,它可以让您编辑为您的项目生成的清单。不幸的是,我现在不记得它的名字了。
  • @vcldeveloper:您是在谈论“项目/选项/应用程序/启用运行时主题”复选框吗?我不知道如何将运行时主题添加到您的清单中,您能指出一个教程吗?
  • @omair iqbal;是的,我在谈论那个选项。对于您的清单,无法在评论部分在这里编写代码,所以我推荐您参考此链接(来自 Google 缓存):webcache.googleusercontent.com/…
猜你喜欢
  • 1970-01-01
  • 2010-10-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-06-02
  • 1970-01-01
  • 2016-02-28
相关资源
最近更新 更多