2

我有一个系统,我使用 UAC 将其设置为普通系统,并在我的 delphi 环境中编译名为 ka.exe 的项目,并为它创建一个 installshield 项目。

设置,一切正常!但是每当我启动我的程序时,它都需要提升,我不知道为什么。

为了确保 installshield 没有在我身上玩心理游戏,我编译了一个新的 .exe,然后手动将其复制到我的联网计算机上。

图标看起来一样,上面也有这个 UAC 盾牌。

我的项目内部有一些功能可能正在与网络共享名称通信,并与 SQL 数据库通信......

那么为什么我的应用程序需要提升才能运行?

4

3 回答 3

5

首先,如果您能够使用 Delphi,请使用asInvoker. 如果你不能,那就做一个外部的,把它和exe放在同一个文件夹里。如果护盾消失,那就太好了。

如果不是,那么事情就会变得更加模糊。有时,当您运行应用程序时,Windows 会随后出现并说“这可能不起作用;您想使用推荐的设置再试一次吗?”。如果您说没问题,则存储了一个组策略,它将在其余时间提升该应用程序。看来,如果您重命名 exe,组策略的效果就会停止。你可以试试。

于 2010-10-06T14:39:42.410 回答
3

即使文件名没有“SETUP”或“INSTALL”字符串,如果 VersionInfo 资源包含此类文本,Windows 也可能认为它需要提升。

检查 VersionInfo,尝试清除任何可疑字符串,因为我相信 Windows 会检查更多文本(如非英文文本)。

于 2010-10-07T18:40:51.000 回答
0

在 Windows Vista 和更高版本上,当 UAC 启用时,管理员仍然没有我们在 Windows XP 和更低版本中看到的完全权限。如果您的程序尝试执行其中一项管理任务(例如,系统受保护位置中的请求;将数据写入受保护位置,例如 %ProgramFiles%、Windows 目录、HKEY_LOCAL_MACHINE;等等),您的程序需要请求提升以带来同意 UI出现需要管理员批准的提示。

您将在此处获得一些详细信息

于 2010-10-05T12:35:45.797 回答