为不需要的应用程序防止抬高(UAC)[重复]


34

这个问题已经在这里有了答案:

最近从Vista 32bit迁移到Windows 7 64bit,我的程序之一现在需要管理员权限。

我使用了一种非常奇特的文本编辑器(深红色编辑器)。尽管不是为Vist / Win7设计的,但它与Vista兼容。但是在Windows 7下,程序可执行文件将此UAC防护添加到其图标中(即使设置“兼容性”选项卡中的“以管理员身份运行”标志),并且每当我运行它时,都会提示您进行提升。

Win7如何确定此类似记事本的应用程序需要管理员权限?如何覆盖这种错误的启发式方法?

Answers:


22

不,深红色编辑器执行此操作的原因不是因为它未签名。(这对Win7来说不是新的)。这是因为在编译时嵌入的应用程序清单指定requestedPrivilegeLevel="highestLevel"

根据此论坛帖子,Crimson Editor开发人员在修订版237-241中对此进行了更改。他们这样做是因为“将Crimson编辑器添加到Shell上下文菜单”功能需要管理员权限。

长期解决方案是让Crimson Editor开发人员更正其应用程序清单。他们应该在安装过程中将自己添加到Shell上下文菜单中,或者至少告诉用户他们必须手动运行提升的应用程序(这很容易做到)而不是需要它。

对于requestedPrivilegeLevel="highestLevel"清单中包含的所有应用程序(使用清单视图查看应用程序清单),您可以使用Microsoft的应用程序兼容性工具包通过RunAsInvoker修复程序对应用程序进行填充,以强制应用程序使用标准用户令牌运行。

有关如何使用应用程序兼容性工具包的详细信息,请参阅这篇文章将其应用到深红编辑器,或一般指示


1
另外,您也可以使用命令行mt.exe工具替换现有清单,可以通过Visual Studio Express免费获得(长时间运行,但如果遇到很多问题则值得这样做)。请注意,替换嵌入式清单将更改.exe文件,因此a)确保您有一个副本,以防万一您破坏东西; b)如果已签名,则您将破坏签名(但在这种情况下,您似乎拥有已经确定它仍然是未签名的)。
2009年

the.d.stro,您是一位救命稻草,效果很好。
phloopy

1
+1表示“更正其应用程序”,并使用AppCompat工具包为其修复了错误。
伊恩·博伊德

13

我发现我有两个应用程序出现此问题。一个在文件名中具有“更新”,另一个在“ FileDecsription”中具有“更新”。我只是从这两个应用程序中删除了“更新”一词,没有更多的UAC警告。我在以下位置找到了“ UAC的工作方式”-“安装程序检测”下的信息:

http://msdn.microsoft.com/en-us/library/aa905330.aspx

其中指出以下内容:

安装程序检测仅适用于:

  • 32位可执行文件
  • 没有requestExecutionLevel的应用程序
  • 以启用UAC的标准用户身份运行的交互式流程

在创建32位进程之前,请检查以下属性以确定它是否是安装程序:

  • 文件名包含诸如“安装”,“设置”和“更新”之类的关键字。
  • 以下版本控制资源字段中的关键字:供应商,公司名称,产品名称,文件描述,原始文件名,内部名称和导出名称。
  • 并排应用程序中的关键字清单嵌入在可执行文件中。
  • 可执行文件中链接的特定StringTable条目中的关键字。
  • 可执行文件中链接的资源文件数据中的关键属性。
  • 可执行文件中的目标字节序列。

  • 注意:关键字和字节序列是从各种安装程序技术中观察到的共同特征中得出的。


7

如果您拥有Visual Studio,则可以执行以下操作:

  1. 以管理员身份打开Visual Studio。
  2. 按Ctrl-O打开文件
  3. 浏览至Crimson Editor所在的文件夹,然后打开cedt.exe
  4. 使用资源编辑器打开该文件,您将看到一棵树,其中有一个名为RT_MANIFEST的分支,将其展开并双击名为“ 1 [English United States]”的单个子条目。
  5. 在右栏中大约四分之三的位置,您将看到requiredExecutionLevel level =“ highestAvailable”,将“ highestAvailable”更改为“ asInvoker”(注意,编辑器默认以改写模式打开。
  6. 保存文件,您就完成了。

高温超导

凯文


By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.