c# 急求,如何禁止用户修改系统时间

study_hard_01 2011-05-18 03:26:31
问题描述:客户修改系统时间会带来系统上的漏洞,比如软件 2011-5-18日过期,如果用户把系统时间改成 2011-5-10 ,那么就会造成系统漏洞,请问该如何在软件运行时禁止修改系统时间,或者如何获得一个正确的时间 我的系统是cs架构,谢谢
...全文
812 39 打赏 收藏 转发到动态 举报
写回复
用AI写文章
39 条回复
切换为时间正序
请发表友善的回复…
发表回复
TJ_HLI2009 2011-07-22
  • 打赏
  • 举报
回复
我是这样处理的,在程序中写一个时间段,登录时校验此时间,即使系统时间被改回去了,也运行不了。
study_hard_01 2011-05-19
  • 打赏
  • 举报
回复
谢谢大家的关注,实在不好意思,因为我就20分,所以分数不够分的,还请大家见谅
zzmsyt 2011-05-19
  • 打赏
  • 举报
回复
我是来接分的
脾气不坏 2011-05-19
  • 打赏
  • 举报
回复
[Quote=引用 29 楼 study_hard_01 的回复:]

谢谢大家,看来从禁止用户修改系统时间是没有好办法了,现在我想的是强迫用户联网,获取网络时间,不知道大家有没有关于 检查网络是不是连接正常和获取网络时间的c#相关资料或代码啊,谢谢啊
[/Quote]
如果程序本身不需要联网 那么强制要求用户联网就会大大限制程序的推广

感觉30 32楼的两位的方法很不错 可以考虑下
A1218Tiger 2011-05-19
  • 打赏
  • 举报
回复
话说我前一段时间做的一个项目,c#里有个报表工具,日本的,快到期了,我们改了系统时间,可软件还是过期了。很强大吧,我不清楚怎么做的。
  • 打赏
  • 举报
回复
[Quote=引用 29 楼 study_hard_01 的回复:]

谢谢大家,看来从禁止用户修改系统时间是没有好办法了,现在我想的是强迫用户联网,获取网络时间,不知道大家有没有关于 检查网络是不是连接正常和获取网络时间的c#相关资料或代码啊,谢谢啊
[/Quote]

还是纠结于“获取网络时间”?那么你大概永远只能个人开发一个个人使用的小软件。

很多系统有很简单的做法。比如当发生一个业务的时候,如果发现新保存的更高流水号业务是比原来保存的耕地流水号业务更早,那么它根本无法过账汇总,系统就会抛出异常。这是基于业务而言,也就是你能明确说出什么叫做你说的“系统上的漏洞”,这个所谓的问题是可以被用户接受的。如果一意孤行,而不从业务出发,那么懂编程还不如不懂编程,因为你的做法很可能破坏用户基本操作概念、破坏一个软件公司是在用户心目中最基本的信誉。
houyanjun 2011-05-19
  • 打赏
  • 举报
回复
[Quote=引用 27 楼 deknight 的回复:]

我觉得可以这样解决
在你给用户程序时,包含一个加密文件,这个文件里有你给用户的时间,比如2011-5-19
安装时判断用户机器日期,如果小于你文件里的日期,就认为他修改了机器时间
[/Quote]

我支持这位兄台的意见。如果你的软件采用下载的方式进行,那么在你发布出去的软件中就标记上这个时间。
1、客户端首次安装你的程序,你应用发布时间去检测客户机本地时间,以保证不能比你发布时间小。
2、当用户使用你软件时候,你周期时间内(例如30分钟),去记录当前的时间,记录当前的时间要加密,加密钥匙可以引入客户机网卡等唯一标示信息,这样,就算用户想免费,也最长是你设定的周期(比如30分钟),那样会很麻烦的。

楼主可以参考
l13873666736 2011-05-19
  • 打赏
  • 举报
回复
一般如果对时间敏感我都用数据库服务器的时间
deknight 2011-05-19
  • 打赏
  • 举报
回复
[Quote=引用 29 楼 study_hard_01 的回复:]
谢谢大家,看来从禁止用户修改系统时间是没有好办法了,现在我想的是强迫用户联网,获取网络时间,不知道大家有没有关于 检查网络是不是连接正常和获取网络时间的c#相关资料或代码啊,谢谢啊
[/Quote]
在你给用户程序时,包含一个加密文件,这个文件里有你给用户的时间,比如2011-5-19
安装时判断用户机器日期,如果小于你文件里的日期,就认为他修改了机器时间

这样不行吗?
study_hard_01 2011-05-19
  • 打赏
  • 举报
回复
谢谢大家,看来从禁止用户修改系统时间是没有好办法了,现在我想的是强迫用户联网,获取网络时间,不知道大家有没有关于 检查网络是不是连接正常和获取网络时间的c#相关资料或代码啊,谢谢啊
dai78 2011-05-19
  • 打赏
  • 举报
回复
限制改时间的方法还从来也没有遇到过,也很不可行
deknight 2011-05-19
  • 打赏
  • 举报
回复
我觉得可以这样解决
在你给用户程序时,包含一个加密文件,这个文件里有你给用户的时间,比如2011-5-19
安装时判断用户机器日期,如果小于你文件里的日期,就认为他修改了机器时间
dai78 2011-05-19
  • 打赏
  • 举报
回复
最好就是限制使用次数啊,你检测日期,只要日期跟你记录的日期没有重复,就算作一天或者次数(当天日期算作一次),他也不可能每次修改的日期是同一天的
l396634084 2011-05-19
  • 打赏
  • 举报
回复
用户不能修改:加个权限啊;
当前时间:datetime获取
deknight 2011-05-19
  • 打赏
  • 举报
回复
[Quote=引用 23 楼 fangxinggood 的回复:]
提交的时间都从服务端取,客户端程序不取客户端系统时间。你无法禁用客户端系统的设置的。
[/Quote]
他的是单机程序,没网络
机器人 2011-05-19
  • 打赏
  • 举报
回复
提交的时间都从服务端取,客户端程序不取客户端系统时间。你无法禁用客户端系统的设置的。
deknight 2011-05-19
  • 打赏
  • 举报
回复
哦,没看到,你要求不能用次数限制
那我觉得没办法了.... 要不就改网络的,否则没办法
deknight 2011-05-19
  • 打赏
  • 举报
回复
不要用时间控制,用打开次数限制,打开1次,注册表里某键值+1 大于某数字比如10,就认为已经过期
虽然用户也可以修改注册表,但是怎么的也比修改时间要麻烦些
lightning0218 2011-05-19
  • 打赏
  • 举报
回复
这哥太犀利了,微软都没有把这个问题解决掉,用户自己的系统时间怎么可以不改呢?你只能从你的软件入手了,不能从系统时间上白费功夫!
study_hard_01 2011-05-19
  • 打赏
  • 举报
回复
sp1234您好,可能我描述的不太清楚,重新描述一下:假如我现在给用户提供一个试用版的软件,设定用户的使用时间截止到2011-6-1,如果用户在开始安装本软件之前把电脑的系统时间修改成 2000-1-1 ,那么用户使用这个软件的时间就可以长达11年,用户使用软件的性质是软件长期运行,所以对软件的控制没有采用使用次数的控制。
加载更多回复(18)

110,539

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧