当前位置:  开发笔记 > 编程语言 > 正文

如何防止Vista要求提升patch.exe?

如何解决《如何防止Vista要求提升patch.exe?》经验,为你挑选了2个好方法。

[对不起,这不是一个直接的编程问题.但我最近切换到一台新的Vista机器,我保持启用UAC(请不要告诉我禁用它,它不是一个选项).

每次运行gnu的patch.exe时,我都会从Vista获得一个提升对话框.如果我将patch.exe重命名为foo.exe它不会这样做,所以我认为这是Vista的"启发式"之一.

有谁知道如何禁用它?这让我疯狂,谷歌没有帮助.

或者我应该为patch.exe添加一个清单,告诉系统不要试图提升这个?这会起作用,如果是这样,你怎么做出这样的表现?

非常感谢,到目前为止,我一直在墙上撞了一个小时.



1> Adam Davis..:

来自:http:
//social.msdn.microsoft.com/Forums/en-US/windowsgeneraldevelopmentissues/thread/bf4f7dfa-5553-41d3-9c8e-311ee4a88599/

如果您可以向受影响的可执行文件添加清单,声明'asInvoker'的requestedExecutionLevel,它应该停止提示.

关于UAC架构和转换现有应用程序的相关指南,以便它们正常工作(靠近页面的底部五分之一):

http://technet.microsoft.com/en-us/library/cc709628.aspx

最后,如何编写这样的清单:

http://www.google.com/search?q=writing+a+uac+manifest

-亚当



2> Ian Boyd..:

问题是您的应用程序不包含带有requestedExectutionLevel的程序集清单.

背景

所有正确编写的Windows应用程序都需要具有程序集清单.从2006年开始,您需要拥有的一个元素是requestedExecutionLevel,它指定您的应用程序是否只能在用户是管理员时才能运行.

如果您的应用程序没有程序集清单,或者它没有requestedExecutionLevel,则 Windows会认为它是遗留应用程序,并且可以做一些事情来保证它继续运行.

遗留应用程序的一个兼容性问题是它们中的一些可能是安装程序或udpater,并且只能在以管理员身份运行时才能运行.Windows尝试通过文件名猜测这些应用程序:

建立

更新

补丁

是否所有文件名都是由兼容性启发式捕获的,试图用户自动提升.

如果应用程序没有程序集清单,则它不是有效编写的Windows应用程序.

正确的解决方案

正确的解决方案是添加所有正确的应用程序将具有的程序集清单.这禁用了启发式方法.

示例UAC"asInvoker"清单:



   
      
         
            
         
      
   
 

推荐阅读
爱唱歌的郭少文_
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有