|
请问goatstudio,关于software trial version问题
[复制链接]
|
|
楼主 |
发表于 8-8-2006 08:53 AM
|
显示全部楼层
请问goatstudio,你有什么efficient way来coding registry key吗??你能够提供一些coding吗?? |
|
|
|
|
|
|
|
楼主 |
发表于 8-8-2006 09:02 AM
|
显示全部楼层
原帖由 sson 于 7-8-2006 06:21 PM 发表
小章鱼一般是记录两个时间:安装时间和最后一次执行时间。
fannwong CurrentVersion\Run 是指向可执行程式,
没有程式是不执行的。
你必须指向你的程式,然后用你的程式来更新。
Dim regKey As RegistryKey
regKey = Registry.LocalMachine.OpenSubKey("SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run", True)
regKey.SetValue(System.DateTime.Now, Application.ExecutablePath.ToString)
regKey.Close()
是不是要这样写,才能自动的读取时间。。。一定要include指定程式。。 |
|
|
|
|
|
|
|
发表于 8-8-2006 09:12 AM
|
显示全部楼层
原帖由 fannwong 于 8-8-2006 08:53 AM 发表
请问goatstudio,你有什么efficient way来coding registry key吗??你能够提供一些coding吗??
网上有很多... 找找看吧. |
|
|
|
|
|
|
|
发表于 8-8-2006 09:13 AM
|
显示全部楼层
原帖由 fannwong 于 8-8-2006 09:02 AM 发表
Dim regKey As RegistryKey
regKey = Registry.LocalMachine.OpenSubKey("SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run", True)
regKey.SetValue(System.Dat ...
你对 registry 的概念完全错误.
SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run 只能设定能运行的软件.
假设你设时间的软件称为 set_time.exe, 那么你就把这名字放在这里, windows 启动的时候会自动运行. |
|
|
|
|
|
|
|
楼主 |
发表于 8-8-2006 09:37 AM
|
显示全部楼层
我懂了,昨天心急,没有读完rigistry的解释。。现在明白了..当windows start up,我就利用registry程式,将时间save to text file.所以当windows start up and registry启动,新的电脑时间将会输入text file.
[ 本帖最后由 fannwong 于 8-8-2006 09:39 AM 编辑 ] |
|
|
|
|
|
|
|
楼主 |
发表于 8-8-2006 09:44 AM
|
显示全部楼层
现在registry的问题解决了,那我又有一个问题,希望大家给意见。。我现在有两个软件,一个是公司的软件,一个是设定时间的软件。那我是要combine 2 software together,or separate and install independent??如果是分开两个软件,那用户安装我公司的软件时,将会先自动的安装设定时间软件。。。请问那一个user friendly?? |
|
|
|
|
|
|
|
发表于 8-8-2006 10:04 AM
|
显示全部楼层
通常不用 Registry, 可以储存在 text file 记录在 [SystemFolder]
方法是当使用者第一次使用你的软件,就 create text file 储存 encrypted NOW 和 Expiry = False
当使用者再开启你的软件,就开启 text file,读取 DateTime decrypted compare NOW,Expiry status.
如果是少于 NOW 和 Expiry = False,储存新的 encrypted NOW 和 Expiry = False。
否,即多于 NOW,更改 Expiry = True 而已。
否,即 Expiry = True,Trial Period Ended 自动离开系统。
Registry 做法也是一样,使用 2 个 variable。 |
|
|
|
|
|
|
|
楼主 |
发表于 8-8-2006 11:04 AM
|
显示全部楼层
版主,你的方法是之前我用的。。但是如果用户还没启动sofware之前,而先更改电脑时间,那么这个text file的方法就行不同了...之后我用registry,是因为当用户一启动电脑,那电脑时间将马上save to text file,like this user dont have chance to modify the date in windows....
for text file example:
user install on 8/8/2006-->store to text file
user user the software on 10/8/2006---->store to another text file.
let say user dindt use the software after this and now the date is 30/8/2006.so if user want to use again the software on 30/8/2006 sure cant,bcos already expired..but what if user modify the windows times become 11/8/2006,then only they start the software,so they still can use the software because the last day used record in text file is 10/8/2006,but now windows times is 11/8/2006(because user change the date before they start software).
[ 本帖最后由 fannwong 于 8-8-2006 11:09 AM 编辑 ] |
|
|
|
|
|
|
|
发表于 8-8-2006 12:25 PM
|
显示全部楼层
原帖由 fannwong 于 8-8-2006 11:04 AM 发表
版主,你的方法是之前我用的。。但是如果用户还没启动sofware之前,而先更改电脑时间,那么这个text file的方法就行不同了...之后我用registry,是因为当用户一启动电脑,那电脑时间将马上save to text file,like ...
你知道,你这样的作法有多少漏洞吗?
1,
如果,那个使用者在还没进入window之前,他就先进入bios设定时间呢?
或者,进入safemode或command prompt去设定时间?
2,
使用者,可以进入msconfig和registry里把你的程序disable掉。。。所以,你必须判断出在电脑开机时你的程序有没有被正常的执行。。。
甚至,像goststudio说的,可能会被防毒软件,antispyware,spybot之类的软件误判为有害的软件。。。而无法把时间纪录在registry。。。
3,
使用者,可以把纪录在电脑里的资料都清洗掉。。。(包括first installation的资料)。。。这样,你又如何判断,你的程序有被install过? |
|
|
|
|
|
|
|
楼主 |
发表于 8-8-2006 02:40 PM
|
显示全部楼层
原帖由 meemee 于 8-8-2006 12:25 PM 发表
你知道,你这样的作法有多少漏洞吗?
1,
如果,那个使用者在还没进入window之前,他就先进入bios设定时间呢?
或者,进入safemode或command prompt去设定时间?
2,
使用者,可以进入m ...
其实我也想过了这些问题,以下是我的做法,如果有什么不足,欢迎一起讨论。。
1)当用户每一次start windows,windows time将会save to a text file.如果下次用户进bios更改时间也没用,因为如果text file里的时间一旦大过windows date(if user change it on bios),那么将会terminate to use the software。所以用户进bios更改时间是没有用处的。。。
2)我没有将windows date store in registry,i store it in text file when windows start up every time.我只是利用registry to start up the function to get the windows date immediately and store in text file.if user delete registry also useless,because i get the date from a text file not from registry.somemore when they restart computer,a new registry key will be install again(i set it everytime when windows start up).只有可能spyware会block it,but i havent try it yet.
3) i hide the text file which use to store the date,so user cant c it,如果用户format pc,那我就暂时没有办法了。如果用户真的format pc,那么就大家就"要头一颗,要命一条了"。。。一起同归于尽。。 |
|
|
|
|
|
|
|
发表于 9-8-2006 09:20 AM
|
显示全部楼层
回复 #30 fannwong 的帖子
2,
你应该误会我的意思了。。。
我说的是program。。。你把program放在startup或run key里,user一样可以把它disable掉。。。所以,你必须确保你的这个date validation的program在开电脑的时候,有被执行。。。
3,
这个,也是有办法解决的。。。只不过,作起来很困难。。。
如果,你的program是供人下载,你可以加入trial version的serial number。。。
当他们下载时,就需要他们的personal info。。。再给他们serial number。。。
这个serial number是对应日期。。。first time install的话,就需要serial number。。。如果,他把电脑format掉的话,他就需要从新拿一个serial number。。。
除了,这些之外,你modify档案时,你的modified date也会被记录起来。。。所以使用者可以找到。。。甚至,他可以把那个档案copy起来,如果,expired之后,他再把旧的copy overwrite回去。。。 |
|
|
|
|
|
|
|
楼主 |
发表于 9-8-2006 09:45 AM
|
显示全部楼层
2.我明白了您的意思。。我已经将set date function and whole software combine together.if user disable the progam,mean that they cant use the software too,since i combine both together.
3.至于serial number,我是有提过,但大部分的同事说trial version no need put serial number,所以我的提议就作罢了。。。我也是在烦如果user format pc。。但trial version是limit function的,所以就算他们format pc,也是一直用会同样的function。。。。暂时我就把这问题放在一边。。如果我公司的trial version available for download,那我会将download link放上来,供大家试用。。试用后欢迎给些意见。。。
[ 本帖最后由 fannwong 于 9-8-2006 09:48 AM 编辑 ] |
|
|
|
|
|
|
|
发表于 9-8-2006 11:30 AM
|
显示全部楼层
原帖由 fannwong 于 8-8-2006 11:04 AM 发表
版主,你的方法是之前我用的。。但是如果用户还没启动sofware之前,而先更改电脑时间,那么这个text file的方法就行不同了...之后我用registry,是因为当用户一启动电脑,那电脑时间将马上save to text file,like ...
看来你还不明白,这是 Pseudo-code;
read SaveTime,Expiry
if Expiry
End Program
else
if Now <= SaveTime
record SaveTime,Expiry
else
record Expiry
alert user "the program has been Expiry"
endif
endif |
|
|
|
|
|
|
|
楼主 |
发表于 9-8-2006 11:51 AM
|
显示全部楼层
请问版主和goatstudio,能不能做到每15分钟,就读取电脑日期和时间。。除了用windows services,还有没有其他方法??? my idea is store an program in registry to retrieve the windows date time every 15 min,is it possible do it in this way?? |
|
|
|
|
|
|
|
发表于 9-8-2006 04:55 PM
|
显示全部楼层
有,用 timer ,interval = 1000 等于 1 秒。 |
|
|
|
|
|
|
|
发表于 9-8-2006 05:00 PM
|
显示全部楼层
如果顾客有得进入互联网, 每当软件开始运行, 连接到你的网络服务器检验。 |
|
|
|
|
|
|
|
楼主 |
发表于 9-8-2006 05:03 PM
|
显示全部楼层
谢谢,我也是下午才找到了timer方法。。不过暂时先别管他。。看到我同时做工的态度,每天打机,看到我都显。。我又何必怎么拼命去做。。。 |
|
|
|
|
|
|
|
发表于 9-8-2006 05:51 PM
|
显示全部楼层
原帖由 fannwong 于 8-8-2006 11:04 AM 发表
版主,你的方法是之前我用的。。但是如果用户还没启动sofware之前,而先更改电脑时间,那么这个text file的方法就行不同了...之后我用registry,是因为当用户一启动电脑,那电脑时间将马上save to text file,like ...
我个人相当不喜欢一些软件随便放东西进我的auto-start list里面。通常我安装完某个软件时都会去检查。发现就将他们关闭(ctrl-alt-del, task manager),如果关闭后依然可以跑,就将他们清除。
我想楼主可以先搞清楚用户群是哪一个level的。
[ 本帖最后由 Sirius 于 9-8-2006 05:53 PM 编辑 ] |
|
|
|
|
|
|
|
发表于 9-8-2006 11:33 PM
|
显示全部楼层
原帖由 fannwong 于 9-8-2006 11:51 AM 发表
请问版主和goatstudio,能不能做到每15分钟,就读取电脑日期和时间。。除了用windows services,还有没有其他方法??? my idea is store an program in registry to retrieve the windows date time every 15 min, ...
象白日梦坛主说的 timer... 只是... 你的软件真的有必要那么做? |
|
|
|
|
|
|
|
发表于 9-8-2006 11:35 PM
|
显示全部楼层
原帖由 hkloke2000 于 9-8-2006 05:00 PM 发表
如果顾客有得进入互联网, 每当软件开始运行, 连接到你的网络服务器检验。
有个坏处... 可以用 ZoneAlarm 轻易挡着... 强逼性的注册如 xp 或 crystal report 的话... 可能分分钟失去了客户. |
|
|
|
|
|
|
| |
本周最热论坛帖子
|