如何检查 dll 或 exe 文件是否在 C# 中具有应用程序清单

How do I check if dll or exe file has an application manifest in C#

我正在为一个构建系统编写一些测试,我 运行 遇到了一个我在 C# 中无法真正解决的问题。

如果有应用程序清单,我需要检查多个 exe 和 dll 文件。

我看到有些人通过查看用户是否以提升的权限执行某些程序来解决这个问题,例如 here and some solving it with C++ like here。然而,这对我来说不起作用,因为我没有执行这些 exe 和 dll 文件。

是否有一些简单的方法来检查是否有附加到 exe 或 dll 文件的应用程序清单?

TIA。

我认为已经找到了解决问题的方法。

请记住,这可能不是最佳解决方案,我相信如果您对该主题进行更多研究,您会找到更好的解决方案。

但是我不得不在更短的时间内想出一个,所以这是我想出的解决方案。

string exeFileData = File.ReadAllText(@"path\file.exe");
string dllFileData = File.ReadAllText(@"path\file.dll");

if (exeFileData.Contains("manifestVersion"))
{
    Console.WriteLine("Exe contains a manifest");
}

if (dllFileData.Contains("manifestVersion"))
{
    Console.WriteLine("Dll contains a manifest");
}

这可能是您能想到的最简单的解决方案。

只需从 exe 或 dll 文件中读取所有文本,因为应用程序清单是明文并且以 xml 格式包含在 exe 或 dll 文件中,所以我们只需要检查是否有一些字符串存在于添加的清单中,在我的示例中 manifestVersion 属性包含在 exe 或 dll 文件中。

就像我说的,这肯定不是最好的解决方案,但我发现它对我有用。