C# 如何保护可执行文件不受版本信息更改的影响?

C# 如何保护可执行文件不受版本信息更改的影响?,c#,.net,C#,.net,我有一个可执行文件,我想保护它不受文件版本信息更改的影响 我最初认为使用证书对exe进行签名可以解决这个问题,但是当您使用免费可用的实用程序修改文件版本信息时,数字签名似乎仍然保持不变 我认为唯一的方法是执行某种类型的操作,但这并不理想,因为我担心这会导致我正在执行的各种后处理器(模糊处理、反调试等)出现问题,从而在运行时拒绝访问.exe 是否有其他方法可以检测文件版本信息是否已被以某种方式修改?如果仅更改了可执行文件的1个字节,则证书将不再有效。 您似乎使用了Windows资源管理器的“属性”

我有一个可执行文件,我想保护它不受文件版本信息更改的影响

我最初认为使用证书对exe进行签名可以解决这个问题,但是当您使用免费可用的实用程序修改文件版本信息时,数字签名似乎仍然保持不变

我认为唯一的方法是执行某种类型的操作,但这并不理想,因为我担心这会导致我正在执行的各种后处理器(模糊处理、反调试等)出现问题,从而在运行时拒绝访问.exe


是否有其他方法可以检测文件版本信息是否已被以某种方式修改?

如果仅更改了可执行文件的1个字节,则证书将不再有效。 您似乎使用了Windows资源管理器的“属性”窗口,更改版本号后,仍然可以看到“数字签名”选项卡。这对于Windows中可执行文件的数字签名是非常误导的,但事实并非如此。 此选项卡仅说明文件包含证书,但与证书的验证无关。在此选项卡中,单击证书,然后单击详细信息,现在在打开的窗口顶部,您可以看到证书是否有效


通过使用Windows API,您可以检查证书是否有效,也许可以在C#中帮助您。

谢谢!我确实在寻找Windows上的“数字签名”选项卡,而不是那些确实表明更改后签名“无效”的详细信息。我正在使用您提到的链接中的代码,但看起来我遇到了与原始海报相同的问题-Verify()似乎没有注意到这种更改,因此我的代码也没有检测到无效签名。看起来没有一个纯粹的.net解决方案。