2009-12-10 97 views
2

您好如何确定与程序(C#)如果BIOS日期有变化?c#如何确定BIOS日期更改

修订

我要找的机器日期,因为我想要写的程序,检查是否存在身体改变该值,算出这个我哈瓦交易的文件,记录日期和时间的一些信息,并且对于这个值的注册,我有一个到期时间,并且如果有一些机构在那个适当的时间之前停止机器,并且等待到适当的时间之后的时间来改变bios日期时间并且然后将该记录与那个时间一起放置,我想要知道这一点。

回答

1

我同意Danut的看法,即使在不太可能发生基于BIOS日期的变化的情况下,除非您可以控制每台机器使用的BIOS类型,但很可能解决方法是出现。

实际上,您可以采取两种主要途径解决此问题,无论是硬件还是软件方法或两者的组合。

硬件方式

取决于你的预算,你可以看看实现加密狗或硬键锁的方法 - decivces如Safenet阿拉丁键锁有内置的定时器而设计的安全性,你可以将你的软件捆绑进去。缺点是每个系统都需要链接到一个加密狗,其中有一个增加的开销成本 - 但最终用户篡改将是非常不可能的。

软件方法

铭记,那总会有一种变通方法,您可以添加软逻辑相当数量来检测是否篡改了发生到系统中,即存储的最后日期该系统被激活并比较当前日期,比较系统已经运行VS基础上,安装日期VS当前日期的最大总时间的总时间...等

但是这种方法你可能只检测篡改已经发生之后,这可能意味着一些数据上尉的有效性该篡改发生的日期和篡改实际检测可能受到威胁的日期之间ured。

最后,它真的可以归结为预算和多少客户愿意支付,以确保篡改不会发生的问题。

0

我建议你通过WMI获取BIOS信息,使用Win32_BIOS class。您可以查询的其中一个字段是BIOS安装日期(我假定您指的是该日期)。您可以跟踪该部分数据并检查它是否发生变化。

有关从.NET使用WMI的详细信息,请参阅here

+0

在此先感谢。 我正在寻找机器的日期,因为我想写程序,检查是否有些机构改变了这个值,算出这个我有一个交易文件,记录一些信息的日期和时间,以及这个值的注册我有适当的时间,如果有些机构在该时间之前停止机器,并且等到超时时间之后才将bios日期时间改回来,然后将记录与那个时间一起放置,那么我想知道这一点。 – jmpena 2009-12-10 20:20:27

+0

@jmpena:我不确定您是否可以直接使用WMI读取BIOS日期/时间;我还没有找到办法做到这一点。但是,我认为您不需要从问题描述中这样做。为什么你不能使用系统时间?我的意思是,DateTime.Now在.NET中报告的日期/时间? – CesarGon 2009-12-10 22:57:26

+0

@jmpena:DateTime.Now报告的系统时间在系统启动时从计算机时钟读取,然后定期更新。从MSDN开始:“当系统首次启动时,它将系统时间设置为基于计算机实时时钟的值,然后定期更新时间”。 – CesarGon 2009-12-10 22:59:09

0

你在找什么在理论上是不可能的。如果有人关闭机器,等待10天,然后将时钟重新设置到9天,则无法通过查看BIOS或时钟来检测该时钟。

但是,如果您的用户将连接到互联网,您可以随时获得实时在线。请记住,除非用户特别小心,否则大多数Windows安装都会自动更新在线时钟。