1

我在很多 .exe 文件的末尾看到了这段文字。它可以告诉我 .exe 文件是用什么语言编写的吗?由于 Microsoft 的引用,我认为它可能是一种 .NET 语言。

<!-- Copyright (c) Microsoft Corporation -->
<!--
  Copyright (c) Microsoft Corporation.  All rights reserved.

   Authors:
       GaryY

   Module name:
       wextract.manifest

   Abstract:
       Manifest to support IExpress WExtract.exe.
-->

  <assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
  <assemblyIdentity
    version="1.0.0.0"
    processorArchitecture="x86"
    name="wextract"
    type="win32"
  />

  <description>IExpress extraction tool</description>

  <dependency>
    <dependentAssembly>
       <assemblyIdentity
           type="win32"
           name="Microsoft.Windows.Common-Controls"
           version="6.0.0.0"
           processorArchitecture="x86"
           publicKeyToken="6595b64144ccf1df"
           language="*"
       />
    </dependentAssembly>
  </dependency>

  <!-- Identify the application security requirements. -->

  <trustInfo xmlns="urn:schemas-microsoft-com:asm.v3">
    <security>
      <requestedPrivileges>
        <requestedExecutionLevel
          level="asInvoker"
          uiAccess="false"/>
        </requestedPrivileges>
       </security>
  </trustInfo>

</assembly>

文件的其余部分只是废话,除了这部分。我在记事本++中打开了文件。

4

2 回答 2

3

这是程序的清单。它作为资源嵌入,类似于图标。它包含 Windows 关注的配置信息。

Microsoft.Windows.Common-Controls 的依赖项元素告诉 Windows,它希望其控件使用 XP 版本的视觉样式主题,而不是传统的 Windows 2000 外观。

requestedPrivileges 元素声明了与 UAC 兼容的程序,当它为非提升的程序(例如写入 c:\windows 目录或 HKLM 注册表项)执行禁止操作时,不需要被欺骗。

清单可以包含存储在并行缓存 (c:\windows\winsxs) 中的 DLL 的附加条目。并用于实现无注册COM注册。这些条目是 DLL Hell 对策。

任何编写为在 Vista 及更高版本上运行并具有 GUI 的现代应用程序都包含这些清单条目。.NET 程序也有它们。您可以使用应用程序清单文件项模板添加自定义清单。如果您不这样做,那么您将获得一个仅包含 UAC 条目的默认清单。

没有提示使用什么语言编写程序。清单独立于编程语言。微软通常用 C++ 编写。

于 2013-06-22T00:54:04.983 回答
0

它看起来像是 MS 用于部署 EXE 的自解压软件的一部分。见链接。VB.net 和 C#(以及其他一些)在编译之前都被转换为一种称为 CIL 的中间语言,所以如果你能从这个 xml 文档中学习确切的语言,我会感到惊讶。

于 2013-06-21T22:40:13.297 回答