2010-10-05 58 views
2

我有一个系统,我把它设置为UAC的普通模式,在我的delphi环境中编译我的项目ka.exe,我为它创建了一个installshield项目。新编译的应用程序需要UAC /海拔?

设置和一切都完成了! 但是每当我开始我的程序,它需要提升,我没有任何线索为什么。

为了确保installshield不会在我身上玩mindgames,我编译了一个新的.exe文件,并将其手动复制到我的联网计算机上。

图标看起来一样,它也有这个UAC盾。

我的项目有内,有些功能可能与网络共享名称交谈,并与SQL数据库说话......

所以为什么我的应用程序需要提升运行?

+0

它访问c:\ program files文件夹下的任何文件吗?写入INI文件,例如? – 2010-10-05 12:36:27

+0

你的代码试图做什么将永远不会导致海拔。 – 2010-10-06 14:36:52

回答

3

首先,如果你能够与德尔福,加上嵌入式清单与asInvoker。如果你不能,那么创建一个外部文件并将其放在与exe相同的文件夹中。如果盾牌消失,很好。

如果不是,那么事情会变得更加混乱。有时,当你运行一个应用程序时,Windows随后出现,并说“这可能没有奏效,你想用推荐的设置再试一次吗?”。如果你说好,那么存储的组策略会在剩下的时间内提升该应用。它确实显示如果您重命名exe,组策略的效果将停止。你可以试试。

+0

@Plastkort哪一个工作?清单或重命名? – 2010-10-06 16:22:30

+0

我尝试了asInvoker,但它没有工作,但重命名文件。 – 2011-04-10 22:46:16

0

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

你会得到一些详细信息here

+0

问题不在于“为什么我的应用程序需要提升并且没有它而失败?”,而是“为什么我的应用程序要求提升?”如果应用程序仅仅因为需要提升而需要提升就会很酷,但这并非如此。应用程序请求提升的原因对于大多数开发人员来说并不明显 - 其中一些列在其他问题的答案中。 – 2010-10-13 14:31:07

+0

我的答案甚至可以应用于后者。发问者应该提供足够的背景和期望描述,以便对他/她的问题没有多重解释。 – Vantomex 2010-10-14 01:58:42

3

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

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