我有一个系统,我把它设置为UAC的常规,在我的delphi环境中我编译了名为ka.exe的项目,我为它创建了一个installshield项目。
设置,一切都完成了! 但每当我开始我的程序时,它需要提升,我不知道为什么。
为了确保installshield不会在我身上播放思想游戏,我编译了一个新的.exe,并将其手动复制到我的联网计算机上。
图标看起来一样,并且它上面还有这个UAC屏蔽。
我的项目里面有一些函数可能正在与网络共享名称交谈,并与SQL数据库交谈......
那为什么我的应用需要提升才能运行?
答案 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