【问题标题】:How to prevent user changing system date/time (in Windows 7)?如何防止用户更改系统日期/时间(在 Windows 7 中)?
【发布时间】:2012-03-31 14:00:47
【问题描述】:

用谷歌搜索后,一般建议是创建一个标准的非管理员帐户。

我刚试过。我只有一个帐户,我自己的帐户,它是管理员,然后创建了第二个帐户(不是访客帐户)。我注销了自己的帐户并进入了新帐户并尝试更改时间。 Windows 7 弹出一个框,询问我的主帐户是否允许这样做(并提示输入其密码)。

我被告知“不能更改系统日期/时间”。我打算交付一台只有标准帐户和我的软件的 PC,但不能(我认为)阻止用户创建管理帐户和更改日期/时间。

我可以通过 Delphi 以编程方式阻止这种情况,还是我必须说如果用户想要破坏我无法阻止它?

【问题讨论】:

  • 如果您使用标准帐户分发PC,并且您持有Administrator用户的密码,则用户无法使用自己的受限帐户创建新的Administrative帐户。
  • @RRUZ,是什么阻止用户关闭 PC 并更改 BIOS 中的日期和时间?虽然您无法“恢复” Windows 管理员的密码,但您可以轻松解决 BIOS 密码问题。
  • 电脑时间不对怎么办?用户不应该能够改变它吗?
  • 我看不出这个问题与 Delphi 有什么关系(除了希望收到准备在 Delphi 中粘贴的代码)?
  • @Justmade 你同意我的看法。 POS 的特别版不是桌面 Windows。 Mawg 使用的是桌面窗口,而不是 POS 版本。

标签: delphi windows-7


【解决方案1】:

在您的应用程序中,您实际上可以在应用程序运行时检测用户更改系统时间。

当系统时间改变时,您将收到 WM_TIMECHANGE。

启动时,您可以保存 gettickcount (As StartTickCount) 和 now (As StartTime)。检查时,您可以检查 tickcount 之间的差异和 time 之间的差异是否匹配(允许小的差异)并知道不同。但是,如果用户将系统时间更改为远离您的应用程序,则此技巧不起作用。也许你可以有一个自动开始检查的服务。

如果您需要改回原来的时间,这里有一些资源: CHANGE the system TIME

顺便说一句,在操作系统级别,普通用户无法创建管理员用户。

【讨论】:

  • +1 我正在考虑存储时间并检查更改。我可以自动启动我的应用程序(它应该是唯一运行的应用程序,但是.. 你知道用户... :-/
  • @Mawg 是的,对于服务员,我的程序正常调用使用服务器时间登录服务器,但用户将拔下/退出程序/更改时间左右。所以我保留了几个跟踪技巧(最新日志时间>当前日志时间?/最后退出程序时间>当前程序开始时间/电缆插入?等)并记录可能的作弊信息供系统管理员考虑。
【解决方案2】:

通常这种限制是使用 Windows 组策略设置的

在 delphi 中,您可以使用 Group Policy APIRSoP WMI Classes

【讨论】:

  • +1 但我不知道如何进入 Windows 7 中的 Windows 组策略编辑器...控制面板/管理工具?然后呢?
  • 啊哈! Windwos home premium 可能没有这样的东西。即使在另一台机器上运行 polsec.msc 也可以
猜你喜欢
  • 2012-10-07
  • 2015-01-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-08-28
  • 2016-03-18
  • 2017-09-05
  • 1970-01-01
相关资源
最近更新 更多