2010-08-17 151 views
0

我想执行程序启动检查,它会搜索所有引用的模块(dll,exes),然后检查它们的版本和存在。软件完整性检查

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

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

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

其他建议?

+1

您可以强制签署所有需要验证的DLL和EXE。 – Oded 2010-08-17 09:21:00

+0

如果您的应用程序是从MSI安装的,则可以将其构建为使Windows安装程序服务执行所有检查以确认文件是否具有正确的版本号,并且还会生成注册表项。 (只要确保打包,以便每个你想检查的文件都是自己的组件和密钥。) – ewall 2010-08-17 13:51:51

+0

To Oded和ewall: 我需要在运行时显示自定义消息的可能性,如果出现问题(比如说,找不到dll )。你的建议并不能解决这个问题。 – 2010-08-19 13:43:29

回答

0

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