我有一个C ++ Builder / Delphi应用程序。它将以下清单嵌入为资源:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
<assemblyIdentity type="win32"
processorArchitecture="*"
version="1.0.0.0"
name="Manufacturer.Division.MyName" />
<description>MyName</description>
<dependency>
<dependentAssembly>
<assemblyIdentity type="win32"
name="Microsoft.Windows.Common-Controls"
version="6.0.0.0"
processorArchitecture="*"
publicKeyToken="6595b64144ccf1df"
language="*" />
</dependentAssembly>
</dependency>
<trustInfo xmlns="urn:schemas-microsoft-com:asm.v2">
<security>
<requestedPrivileges>
<requestedExecutionLevel level="asInvoker" uiAccess="false" />
</requestedPrivileges>
</security>
</trustInfo>
<compatibility xmlns="urn:schemas-microsoft-com:compatibility.v1">
<application>
<supportedOS Id="{e2011457-1546-43c5-a5fe-008deee3d3f0}" /> <!-- Win Vista and Win Serv 2008 -->
<supportedOS Id="{35138b9a-5d96-4fbd-8e2d-a2440225f93a}" /> <!-- Win 7 and Win Serv 2008 R2 -->
<supportedOS Id="{4a2f28e3-53b9-4441-ba9c-d69d4a4a6e38}" /> <!-- Win 8 and Win Serv 2012 -->
<supportedOS Id="{1f676c76-80e1-4239-95bb-83d0f6d0da78}" /> <!-- Win 8.1 and Win Serv 2012 R2 -->
</application>
</compatibility>
<application xmlns="urn:schemas-microsoft-com:asm.v3">
<windowsSettings>
<dpiAware xmlns="http://schemas.microsoft.com/SMI/2005/WindowsSettings">True/PM</dpiAware>
</windowsSettings>
</application>
</assembly>
该软件不使用注册管理机构HKLM - 仅限HKCU,它读取/写入%LocalAppData%。它不需要管理权限。
requestedExecutionLevel 设置为 asInvoker ,如上面的XML清单所示,因此不应显示屏蔽图标。
在某些桌面上屏蔽图标不会出现,而在某些桌面上则显示 - 其他程序在同一桌面上不显示屏蔽图标。什么可能导致我的应用程序出现盾牌图标(以及恼人的UAC提示)?
在所有系统上 - 用户类型为Administrator,UAC设置为默认级别(在Windows 7和8上) - 所以我确实看到没有屏蔽的原因只显示在某些桌面而不是所有桌面上。
这些系统出现盾牌图标与盾牌图标不存在的系统有什么不同?
答案 0 :(得分:4)
可执行文件具有兼容性选项,用于强制应用程序以管理员身份执行。