【问题标题】:What is causing desktop shield icon overlay on *SOME* desktops是什么导致 *某些 * 桌面上的桌面盾牌图标覆盖
【发布时间】:2015-10-02 05:24:56
【问题描述】:

我有一个 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 提示)?

在所有系统上 - 用户类型是管理员并且 UAC 设置为默认级别(在 Windows 7 和 8 上) - 所以我真的看不出只有在某些而不是在所有桌面上显示盾牌的原因。

这些系统上出现盾牌图标的系统与没有盾牌图标的系统有什么不同?

【问题讨论】:

标签: windows delphi manifest c++builder uac


【解决方案1】:

可执行文件设置了兼容性选项以强制应用程序以管理员身份执行。

【讨论】:

  • 这是一种可能(我会测试一下),但是到目前为止,我在自己的系统上添加了这个(没有出现盾牌图标)并且没有添加盾牌图标(即使提示出现是因为程序快捷方式设置为请求管理权限)。还有其他可能导致这种情况吗?还是可以在程序图标上的“属性”之外的其他地方设置兼容性选项?
  • 你被图标缓存弄糊涂了。我怀疑重新启动会强制更新图标。您还可以在可执行文件上选中此选项,然后创建快捷方式。然后你会看到盾牌。假设您创建的快捷方式还没有缓存图标。我 >99% 确定这是您观察到的原因。
  • 谢谢 - 谜团解开了!确实是那个复选框 - 刚刚在受影响的桌面之一上选中!
  • 从互联网下载的可执行文件有时也会出现屏蔽图标。
  • @SilverWarior 我不这么认为。它来自互联网的事实不会导致 UAC 提升。
猜你喜欢
  • 2017-04-08
  • 1970-01-01
  • 2011-09-17
  • 1970-01-01
  • 1970-01-01
  • 2020-12-27
  • 2014-07-23
  • 2021-07-17
  • 1970-01-01
相关资源
最近更新 更多