c#如何确定bios日期更改

c#如何确定bios日期更改,c#,winapi,date,bios,C#,Winapi,Date,Bios,您好,我如何使用程序(c#)确定Bios日期是否已更改 已更新 我在寻找机器日期,因为我想写一个程序,检查是否有人改变了这个值,我有一个事务文件,记录了一些日期和时间的信息,对于该值的注册,我有一个到期时间,如果有人在该到期时间之前停止机器,并等到到期时间之后再更改bios日期时间,然后将记录放回该时间,我想知道这一点。我建议您使用WMI获取bios信息。您可以查询的字段之一是BIOS安装日期(我假设您指的是该日期)。您可以跟踪该数据段并检查其是否更改 可以找到有关从.NET使用WMI的详细信息

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

已更新


我在寻找机器日期,因为我想写一个程序,检查是否有人改变了这个值,我有一个事务文件,记录了一些日期和时间的信息,对于该值的注册,我有一个到期时间,如果有人在该到期时间之前停止机器,并等到到期时间之后再更改bios日期时间,然后将记录放回该时间,我想知道这一点。

我建议您使用WMI获取bios信息。您可以查询的字段之一是BIOS安装日期(我假设您指的是该日期)。您可以跟踪该数据段并检查其是否更改


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

理论上,您所寻找的是不可能的。如果有人关闭一台机器,等待10天,然后将其时钟设置为提前9天,则无法通过查看BIOS或时钟来检测


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

我同意Danut的观点,即使在不太可能检测到基于bios日期的更改的情况下,除非您可以控制每台机器使用的bios类型,很可能会出现一个变通办法

要解决这个问题,有两条主要途径,一条是硬件方法,另一条是软件方法,或者两者结合

硬件方法

根据您的预算,您可以考虑实施加密狗或硬钥匙锁方法—Alladin Keylock等决策器内置计时器,用于安全性,您可以将软件绑定到这些计时器中。缺点是每个系统都需要连接到加密狗,这会增加额外的开销成本,但是最终用户篡改的可能性很小

软件方法

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

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


归根结底,这实际上是一个预算问题,以及您的客户愿意支付多少钱以确保不会发生篡改。

提前感谢。我在寻找机器日期,因为我想写一个程序,检查是否有人改变了这个值,我有一个事务文件,记录了一些日期和时间的信息,对于这些值的注册,我有一个到期时间,如果有人在到期时间之前停止机器,并等到到期时间之后再更改bios日期时间,然后将记录放回该时间,我想知道这一点。@jmpena:我不确定是否可以使用WMI直接读取bios日期/时间;我还没找到办法。但是,我不认为您需要从问题描述中这样做。为什么你不能使用系统时间?我的意思是,DateTime报告的日期/时间。现在在.NET中?@jmpena:DateTime报告的系统时间。现在,在系统启动时从计算机时钟读取,然后定期更新。From>:“当系统首次启动时,它将系统时间设置为基于计算机实时时钟的值,然后定期更新时间”。