新编译的应用程序需要UAC /提升?

时间:2010-10-05 10:29:10

标签: delphi windows-vista uac elevation process-elevation

我有一个系统,我把它设置为UAC的常规,在我的delphi环境中我编译了名为ka.exe的项目,我为它创建了一个installshield项目。

设置,一切都完成了! 但每当我开始我的程序时,它需要提升,我不知道为什么。

为了确保installshield不会在我身上播放思想游戏,我编译了一个新的.exe,并将其手动复制到我的联网计算机上。

图标看起来一样,并且它上面还有这个UAC屏蔽。

我的项目里面有一些函数可能正在与网络共享名称交谈,并与SQL数据库交谈......

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

3 个答案:

答案 0 :(得分:3)

首先,如果您能够使用Delphi,请使用asInvoker添加嵌入式清单。如果你不能,那么制作一个外部的并将它放在与exe相同的文件夹中。如果盾牌消失了,很棒。

如果没有,那么事情变得更加模糊。有时当你运行一个应用程序时,Windows随后出现并说“可能没有用;你想再次使用推荐的设置吗?”。如果你说好的话,就会存储一个组策略,以便在剩下的时间内提升该应用程序。看来,如果重命名exe,则组策略的效果会停止。你可以试试。

答案 1 :(得分:3)

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

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

答案 2 :(得分:0)

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

您将获得一些详细信息here