2

您好,我如何使用程序(c#)确定 Bios 日期是否有更改?

更新

我正在寻找机器日期,因为我想编写程序来检查某些机构是否更改了该值,弄清楚我有一个事务文件,该文件记录了一些带有日期和时间的信息,并且对于这些值的注册,我有一个到期时间,如果有人在该到期时间之前停止机器并等到到期时间之后的时间将BIOS日期时间更改回来,然后将记录与该时间一起放置,我想知道这一点。

4

3 回答 3

1

我同意 Danut,即使在不太可能的情况下可以根据 bios 日期检测到更改,除非您可以控制每台机器使用的 bios 类型,否则很可能会出现解决方法。

您确实有两条主要途径可以解决此问题,硬件或软件方法或两者的组合。

硬件方法

根据您的预算,您可以考虑实施加密狗或硬键锁定方法 - Safenet Alladin Keylock 等设备内置了专为安全设计的计时器,您可以将其绑定到您的软件中。不利的一面是,每个系统都需要连接到加密狗,这会增加间接成本——但最终用户篡改的可能性很小。

软件方法

请记住,总会有一种解决方法,您可以添加大量软逻辑来检测系统是否发生了篡改,即存储系统激活的最后日期并将其与当前日期进行比较,比较系统运行的总时间与基于安装日期与当前日期的最大总时间……等等。

但是,使用这种方法,您可能只能在篡改发生后检测到篡改,这可能意味着在篡改发生日期和实际检测到篡改日期之间捕获的某些数据的有效性可能会受到影响。

最后,这实际上归结为预算问题以及您的客户愿意支付多少费用以确保不会发生篡改。

于 2009-12-17T06:01:01.957 回答
0

我建议您使用Win32_BIOS 类通过 WMI 获取 BIOS 信息。您可以查询的字段之一是 BIOS 安装日期(我假设您指的是该日期)。您可以跟踪该数据并检查它是否发生变化。

可以在此处找到有关从 .NET 使用 WMI 的详细信息。

于 2009-12-10T20:00:01.537 回答
0

您正在寻找的东西在理论上是不可能的。如果有人关闭机器,等待 10 天,然后将时钟设置回 9 天前,则无法通过查看 BIOS 或时钟来检测到这一点。

但是,如果您的用户将连接到 Internet,则您始终可以实时在线。请记住,除非用户格外小心,否则大多数 Windows 安装也会在线自动更新时钟。

于 2009-12-13T07:33:46.800 回答