当前位置:主页>仓库管理软件> 列表

如何禁止操作员修改系统时间 找家庭记账软件

进销存软件版1楼: 做了网络版本程序,客户消费结束时间的依据是当前本机的系统时间。
客户要求禁止设置时间。
请教高人,怎么办?
最好用delphi代码开关这个功能。谢谢。

2楼: 只有个笨办法,你自己的客户端记录一个启动时间,以后用内部的Timer1计时
没1分钟重设一次机器时间。 如免费局域网管理软件

3楼: 检测当前活动窗体是否是设置时间的那个窗体,如果是,不客气,关闭!呵呵

4楼: 那样直接命令行 Net time XX:XX:XX,呵呵
再不行写个程序来改时间。

ps:好像注册表里没有屏蔽时间的选项。

5楼: 找一个标准时间源,定时校正时间。

6楼: 难道注册表或者CPL文件无法禁止这个操作吗?郁闷......。

进销存软件版7楼: 可以啊,timedate.cpl就是了。只是你删除这个还是可以改时间啊?
命令行里直接Data命令就行了,而且时间信息不是存在注册表里的。

8楼: 1、将c:\windows\system\timedate.cpl文件删除,操作员将无法双击托盘更改时间;
2、将CMOS加锁,使操作员无法更改时间;
3、将COMMAND.COM更改,使之不能使用DATE和TIME命令更改时间。

9楼: 从服务器端取时间, 然后自己计时,不使用本地时间

10楼: 同意lich的。

11楼: 对,应该统一用服务器时间!

12楼: to lich:客户端有六个,我担心从服务器取时间会使服务器负担太重。没有文献可查。



TO:SiWeiLiuLang
这几种办法我一直在用。另外我还采取了 监视和关闭特定窗口 的办法,效果不错。只是让客户觉得我们非常不专业。

谢谢各位了,楼上的招数,我都用过了。只是想求更专业点的。呵呵。 如家庭记账软件

13楼: 拦截WM_TIMECHANGE消息,如果修改了,则从服务器上读取时间.

进销存软件版14楼: 象这种情况, 最好还是从服务器取时间.

15楼: 同意chnplzh兄的意見,用一個adoquery取服務器時間,不從本機取

16楼: 其实,启动的时候读取一次就可以了,
同时记录当时的 GetTickCount 的值(这个值不会因为计算机的时间被修改而改变)

然后随时可以根据当前 GetTickCount 和程序启动时的差值,以及启动时的服务器时间
来计算当前的服务器时间(除非服务器端的时间被修改了,就需要重启所有客户端)

但要注意的是 GetTickCount 这个函数的返回值到49天后会回到0

17楼: 多人接受答案了。