这个问题已经在这里有了答案:
最近从Vista 32bit迁移到Windows 7 64bit,我的程序之一现在需要管理员权限。
我使用了一种非常奇特的文本编辑器(深红色编辑器)。尽管不是为Vist / Win7设计的,但它与Vista兼容。但是在Windows 7下,程序可执行文件将此UAC防护添加到其图标中(即使未设置“兼容性”选项卡中的“以管理员身份运行”标志),并且每当我运行它时,都会提示您进行提升。
Win7如何确定此类似记事本的应用程序需要管理员权限?如何覆盖这种错误的启发式方法?
这个问题已经在这里有了答案:
最近从Vista 32bit迁移到Windows 7 64bit,我的程序之一现在需要管理员权限。
我使用了一种非常奇特的文本编辑器(深红色编辑器)。尽管不是为Vist / Win7设计的,但它与Vista兼容。但是在Windows 7下,程序可执行文件将此UAC防护添加到其图标中(即使未设置“兼容性”选项卡中的“以管理员身份运行”标志),并且每当我运行它时,都会提示您进行提升。
Win7如何确定此类似记事本的应用程序需要管理员权限?如何覆盖这种错误的启发式方法?
Answers:
不,深红色编辑器执行此操作的原因不是因为它未签名。(这对Win7来说不是新的)。这是因为在编译时嵌入的应用程序清单指定requestedPrivilegeLevel="highestLevel"。
根据此论坛帖子,Crimson Editor开发人员在修订版237-241中对此进行了更改。他们这样做是因为“将Crimson编辑器添加到Shell上下文菜单”功能需要管理员权限。
长期解决方案是让Crimson Editor开发人员更正其应用程序清单。他们应该在安装过程中将自己添加到Shell上下文菜单中,或者至少告诉用户他们必须手动运行提升的应用程序(这很容易做到)而不是需要它。
对于requestedPrivilegeLevel="highestLevel"清单中包含的所有应用程序(使用清单视图查看应用程序清单),您可以使用Microsoft的应用程序兼容性工具包通过RunAsInvoker修复程序对应用程序进行填充,以强制应用程序使用标准用户令牌运行。
我发现我有两个应用程序出现此问题。一个在文件名中具有“更新”,另一个在“ FileDecsription”中具有“更新”。我只是从这两个应用程序中删除了“更新”一词,没有更多的UAC警告。我在以下位置找到了“ UAC的工作方式”-“安装程序检测”下的信息:
http://msdn.microsoft.com/en-us/library/aa905330.aspx
其中指出以下内容:
安装程序检测仅适用于:
- 32位可执行文件
- 没有requestExecutionLevel的应用程序
- 以启用UAC的标准用户身份运行的交互式流程
在创建32位进程之前,请检查以下属性以确定它是否是安装程序:
- 文件名包含诸如“安装”,“设置”和“更新”之类的关键字。
- 以下版本控制资源字段中的关键字:供应商,公司名称,产品名称,文件描述,原始文件名,内部名称和导出名称。
- 并排应用程序中的关键字清单嵌入在可执行文件中。
- 可执行文件中链接的特定StringTable条目中的关键字。
- 可执行文件中链接的资源文件数据中的关键属性。
可执行文件中的目标字节序列。
注意:关键字和字节序列是从各种安装程序技术中观察到的共同特征中得出的。
如果您拥有Visual Studio,则可以执行以下操作:
高温超导
凯文