【发布时间】:2009-03-04 14:16:59
【问题描述】:
我有一个在机器上运行的 C#.NET 应用程序。如何在运行时计算整个代码的校验和?
注意:
我不想计算正在使用的图像的校验和,而是实际的代码部分。
【问题讨论】:
-
你需要更清楚。你所说的代码是什么意思——C#/VB 源代码、IL、机器代码图像,还是别的什么?为什么要校验和(不能只使用代码签名)?
我有一个在机器上运行的 C#.NET 应用程序。如何在运行时计算整个代码的校验和?
我不想计算正在使用的图像的校验和,而是实际的代码部分。
【问题讨论】:
我没用过,但是:
使用反射,您可以导航到 GetILAsByteArray 并执行校验和(每个方法)。
但我认为使用代码签名或 Assembly.GetExecutingAssembly 然后对 .dll 或 .exe 进行校验和会容易得多。
【讨论】:
我只会使用code signing,但如果您真的想推出自己的解决方案(这可能是个坏主意。代码签名是件好事)您可以使用反射来查看 IL 代码并计算校验和基于此。这不是一个很好的解决方案,并且可能会导致一些奇怪的错误,所以请为自己省点麻烦并使用代码签名。
【讨论】:
在运行时,您无权访问原始编写的源代码。
【讨论】:
您的程序集上的强名称可以做到这一点 - 但您必须相信它会像宣传的那样工作。 您要解决的确切问题是什么?
【讨论】: