C# 软件完整性检查

C# 软件完整性检查,c#,C#,我想在程序启动时执行一个检查,它将搜索所有引用的模块(DLL、EXE),然后检查它们的版本和状态 然后,如果出现问题,显示带有问题描述的消息框并关闭 我目前正在使用反射,但现在的问题是,在我能够执行任何检查之前(在Main()之前)加载了一些模块,程序崩溃 我现在看到的唯一解决方案是编写预加载应用程序,它可以做到这一点,然后启动主程序 还有其他建议吗?如果包含检查代码的程序集/可执行文件引用了程序集,则在运行检查之前将加载程序集。据我所知,解决这个问题的唯一方法(除了您提到的预加载程序外)是从入

我想在程序启动时执行一个检查,它将搜索所有引用的模块(DLL、EXE),然后检查它们的版本和状态

然后,如果出现问题,显示带有问题描述的消息框并关闭

我目前正在使用反射,但现在的问题是,在我能够执行任何检查之前(在Main()之前)加载了一些模块,程序崩溃

我现在看到的唯一解决方案是编写预加载应用程序,它可以做到这一点,然后启动主程序


还有其他建议吗?

如果包含检查代码的程序集/可执行文件引用了程序集,则在运行检查之前将加载程序集。据我所知,解决这个问题的唯一方法(除了您提到的预加载程序外)是从入口点程序集/可执行文件中删除所有引用,然后使用基于配置的反射加载它们。

您可以对所有需要验证的DLL和EXE进行强签名。如果您的应用程序是从MSI安装的,您可以构建它,使Windows Installer服务执行所有检查,以确认存在具有正确版本号的文件,并且也构建了注册表项。(只需确保打包后,您要检查的每个文件都是自己的组件和密钥。)对于Oded和ewall:如果出现问题(例如,未找到dll),我需要在运行时显示自定义消息的可能性。你的建议解决不了这个问题。