请高手分析我的软件“注册及试用期控制程序段”是否有隐含BUG

mi6236 2004-03-28 09:57:33
1.?如何才能找到系统路径未解决
Option Explicit
Sub main()
Dim ws As Workspace
Dim db As Database
Dim tdf As TableDef
Dim fld As Field
Dim rst As Recordset
If Dir("c:\windows\system\register.mdb") = "" Then
Set ws = DBEngine.Workspaces(0)
Set db = ws.CreateDatabase("c:\windows\system\register.mdb", dbLangGeneral)
db.Connect = ";pwd=andy"
Set tdf = db.CreateTableDef("register")
Set fld = tdf.CreateField("register", 2)
tdf.Fields.Append fld
db.TableDefs.Append tdf
Set db = ws.OpenDatabase("c:\windows\system\register.mdb")
Set rst = db.OpenRecordset("register")
rst.AddNew
rst.Fields("register") = 0
rst.Update
rst.Close
register.Show
Else
Dim str_pwd As String
Set ws = DBEngine.Workspaces(0)
Set db = ws.OpenDatabase("c:\windows\system\register.mdb", str_pwd = "springlover")
Set rst = db.OpenRecordset("register")
rst.MoveFirst
If rst.Fields("register") = 1 Then
MDIForm1.Show
Else
register.Show
End If
End If
End Sub
...全文
58 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
mi6236 2004-04-01
  • 打赏
  • 举报
回复
如何找到系统路径已于今日上午实现,感谢 My97(冷空气) 的热情回答,希望能帮我分析一下程序的安全性有没有问题
My97 2004-04-01
  • 打赏
  • 举报
回复
答如何找到系统路径:

'获取system目录的声明
Private Declare Function GetSystemDirectory Lib "KERNEL32" Alias "GetSystemDirectoryA" (ByVal lpBuffer As String, ByVal nSize As Long) As Long


'在代码中调用就可以了
Call GetSystemDirectory(SystemDirectory, 255)

返回字符串变量 SystemDirectory
dofly 2004-04-01
  • 打赏
  • 举报
回复
個人意見,謹供參考!

寫一個 ini文件來記錄或者寫在注冊表里面.
mi6236 2004-04-01
  • 打赏
  • 举报
回复
ding
mi6236 2004-03-28
  • 打赏
  • 举报
回复
Private Sub extract_Click()
'根据原ID算出注册ID
Dim regid As Long
If IsNumeric(Text1.Text) Then
regid = CLng(Text1.Text) / 4 * 3 + 987654321
Else
'error
End If
Text2.Text = regid
End Sub
mi6236 2004-03-28
  • 打赏
  • 举报
回复
Option Explicit
Private Declare Function GetVolumeInformation Lib "kernel32" _
Alias "GetVolumeInformationA" (ByVal lpRootPathName As String, _
ByVal lpVolumeNameBuffer As String, ByVal nVolumeNameSize As Long, _
lpVolumeSerialNumber As Long, lpMaximumComponentLength As Long, _
lpFileSystemFlags As Long, ByVal lpFileSystemNameBuffer As String, _
ByVal nFileSystemNameSize As Long) As Long
Private Sub cancel_Click()
' On Error GoTo error
'系统检测是否有date.mdb文件,如果没有,则是系统第一次安装,建立此数据库文件
If Dir("c:\windows\system\date.mdb") = "" Then
Dim ws As Workspace
Dim db As Database
Dim tdf As TableDef
Dim fld As Field
Dim idx As Index
Dim rst As Recordset
Dim str_pwd As String
'DBEngine对象相当于Jet数据库引擎,不需要创建该对象,CreateWorkspace创建一个工作区对象
'Workspace对象为用户定义一个会话,通过与之关联的用户名和口令建立一个安全级别。当不需要安全级别时可使用缺省的工作区DBEngine.Workspace(0)
Set ws = DBEngine.Workspaces(0)
'创建一个空的数据库文件,dbLangGeneral参数用来确定数据驱动程序支持的参数
Set db = ws.CreateDatabase("c:\windows\system\date.mdb", dbLangGeneral)
'指定打开的数据库类型,并且包括参数,如用户和口令
db.Connect = ";pwd=andy"
'创建一张新表
Set tdf = db.CreateTableDef("date")
tdf.Attributes = 0
tdf.Connect = ""
tdf.SourceTableName = ""
tdf.ValidationRule = ""
tdf.ValidationText = "" 'field first_time
'创建first_time字段
Set fld = tdf.CreateField("first_time", dbDate, 8)
fld.Attributes = 1
fld.DefaultValue = ""
fld.OrdinalPosition = 0
fld.Required = False
fld.ValidationRule = ""
fld.ValidationText = ""
tdf.Fields.Append fld '把first_time字段添加到表中
Set fld = tdf.CreateField("last_time", dbDate, 8) '创建last_time字段
fld.Attributes = 1
fld.Required = False
fld.ValidationRule = ""
fld.ValidationText = ""
tdf.Fields.Append fld '把last_time字段添加到表中
Set fld = tdf.CreateField("times", dbInteger, 2) '创建times字段
fld.Attributes = 1
fld.DefaultValue = ""
fld.OrdinalPosition = 2
fld.Required = False
fld.ValidationRule = ""
fld.ValidationText = ""
tdf.Fields.Append fld '把times字段添加到表中
db.TableDefs.Append tdf '将date表添加到date.mdb中
db.Close '关闭data.mdb
Set db = ws.OpenDatabase("c:\windows\system\date.mdb") '以可读写方式打开date.mdb
Set rst = db.OpenRecordset("date") '打开一个记录集
With rst
.AddNew '向记录集增加一条新记录
'写入一条记录
.Fields("first_time") = Date
.Fields("last_time") = Date
.Fields("times") = 1
.Update '将记录写入数据库
End With
db.Close '关闭date.mdb
MsgBox "这是你第一次启动本系统!你的试用期为30天,今天是第一天,谢谢使用!", 48, "金鹏软件工作室"
MDIForm1.Show '启动你和主窗体
Else '系统有date.mdb文件,则不是第一次运行,就不用建立数据库文件了.
Dim ws2 As Workspace
Dim db2 As Database
Dim rst2 As Recordset
Dim num As Integer
Set ws2 = Workspaces(0)
Set db2 = ws2.OpenDatabase("c:\windows\system\date.mdb", str_pwd = "springlover")
Set rst2 = db2.OpenRecordset("date") '开始检测用户是否修改了系统日期
rst2.MoveFirst
If rst2.Fields("last_time") > Date Then
MsgBox "对不起,你在本软件的试用期骨不可以修改系统日期,否则将取消你地不系统的试用权,如果你想继续使用本软件。请你恢复系统日期,谢谢合作!", 48, "金鹏软件工作室"
End
End If
If Date - rst2.Fields("first_time") >= 30 Then '设定试用期为30天
MsgBox "你已经启动本系统" & rst2.Fields("times") & "而且已经到了30天的试用期如果你想继续使用本软件,请你到本公司注册并购买正版的软件!", 48, "金鹏软件工作室"
Else
'仍在试用期内
num = rst2.Fields("times")
rst2.Edit
rst2.Fields("last_time") = Date
rst2.Fields("times") = num + 1
rst2.Update
MsgBox "这是你第" & rst2.Fields("times") & "次使用本系统,你还有" & 30 - (Date - rst2.Fields("first_time")) & "天的试用期,祝你今天工件愉快!", 48, "金鹏软件工作室"
MDIForm1.Show '启动你的主窗体
End If
End If
Unload register '关闭注册窗口
Exit Sub

'error:
' MsgBox Err.Description
End Sub

Private Sub enter_Click()
'验证注册ID
Dim ws As Workspace
Dim db As Database
Dim tdf As TableDef
Dim rst As Recordset
Dim fld As Field
Dim Driver, VolName, Fsys As String
Dim volNumber, MCM, FSF As Long
Driver = "c:\"
Dim res As Long
res = GetVolumeInformation(Driver, VolName, 127, volNumber, MCM, FSF, Fsys, 127)
Dim Tid As Long
Dim regid As Long
Tid = volNumber / 2 + 123456789
regid = Val(Trim(Text2.Text))
If regid = Tid / 4 * 3 + 987654321 Then
MsgBox "恭喜您已经注册成功,欢迎使用水利造价管理系统", vbOKOnly, "金鹏软件工作室"
Set ws = DBEngine.Workspaces(0)
Set db = ws.OpenDatabase("c:\windows\system\register.mdb")
Set rst = db.OpenRecordset("register")
rst.MoveFirst
rst.Edit
rst.Fields("register") = 1
rst.Update
db.Close
Unload register
MDIForm1.Show
Else
MsgBox "注册码错误,请重新输入!"
Exit Sub
End If
End Sub

Private Sub Form_Load()
'根据C盘序列号得到原ID
Dim Driver, VolName, Fsys As String
Dim volNumber, MCM, FSF As Long
Driver = "c:\"
Dim res As Long
Dim localid As Long
res = GetVolumeInformation(Driver, VolName, 127, volNumber, MCM, FSF, Fsys, 127)
'volNumber是C盘序列号
localid = volNumber / 2 + 123456789
Text1.Text = localid
End Sub
本课程主要讲解如下内容:引言NumPy多维数组ndarrayNumPy创建数组1、KNN算法背景02、KNN中距离度量03、KNN分类算法流程04、手写KNN分类算法05、KNN回归算法流程 06 量化交易  量化交易是指以先进的数学模型替代人为的主观判断,利用计算机技术从庞大的历史数据中海选能带来超额收益的多种“大概率”事件以制定策略,极大地减少了投资者情绪波动的影响,避免在市场极度狂热或悲观的情况下作出非理性的投资决策。 定量投资和传统的定性投资本质上来说是相同的,二者都是基于市场非有效或弱有效的理论基础。两者的区别在于定量投资管理是“定性思想的量化应用”,更加强调数据。量化交易具有以下几个方面的特点: 1、纪律性。根据模型的运行结果进行决策,而不是凭感觉。纪律性既可以克制人性中贪婪、恐惧和侥幸心理等弱点,也可以克服认知偏差,且可跟踪。 2、系统性。具体表现为“三多”。一是多层次,包括在大类资产配置、行业选择、精选具体资产三个层次上都有模型;二是多角度,定量投资的核心思想包括宏观周期、市场结构、估值、成长、盈利质量、分析师盈利预测、市场情绪等多个角度;三是多数据,即对海量数据的处理。 3、套利思想。定量投资通过多面、系统性的扫描捕捉错误定价、错误估值带来的机会,从而发现估值洼地,并通过买入低估资产、卖出高估资产而获利。 4、概率取胜。一是定量投资不断从历史数据中挖掘有望重复的规律并加以利用;二是依靠组合资产取胜,而不是单个资产取胜。 量化投资技术包括多种具体方法,在投资品种选择、投资时机选择、股指期货套利、商品期货套利、统计套利和算法交易等领域得到广泛应用。在此,以统计套利和算法交易为例进行阐述。 1、统计套利 [1]  统计套利是利用资产价格的历史统计规律进行的套利,是一种风险套利,其风险在于这种历史统计规律在未来一时间内是否继续存在。 统计套利的主要思路是先找出相关性most好的若干对投资品种,再找出每一对投资品种的长期均衡关系(协整关系),当某一对品种的价差(协整方程的残差)偏离到一定程度时开始建仓,买进被相对低估的品种、卖空被相对高估的品种,等价差回归均衡后获利了结。股指期货对冲是统计套利较常采用的一种操作策略,即利用不同国家、地区或行业的指数相关性,同时买入、卖出一对指数期货进行交易。在经济全球化条件下,各个国家、地区和行业股票指数的关联性越来越强,从而容易导致股指系统性风险的产生,因此,对指数间的统计套利进行对冲是一种低风险、高收益的交易方式。 2、算法交易。 算法交易又称自动交易、黑盒交易或机器交易,是指通过设计算法,利用计算机程序发出交易指令的方法。在交易中,程序可以决定的范围包括交易时间的选择、交易的价格,甚至包括most后需要成交的资产数量。 算法交易的主要类型有: (1) 被动型算法交易,也称结构型算法交易。该交易算法除利用历史数据估计交易模型的关键参数外,不会根据市场的状况主动选择交易时机和交易的数量,而是按照一个既定的交易方针进行交易。该策略的的核心是减少滑价(目标价与实际成交均价的差)。被动型算法交易most成熟,使用也most为广泛,如在国际市场上使用most多的成交加权平均价格(VWAP)、时间加权平均价格(TWAP)等都属于被动型算法交易。 (2) 主动型算法交易,也称机会型算法交易。这类交易算法根据市场的状况作出实时的决策,判断是否交易、交易的数量、交易的价格等。主动型交易算法除了努力减少滑价以外,把关注的重点逐渐转向了价格趋势预测上。 (3) 综合型算法交易,该交易是前两者的结合。这类算法常见的方式是先把交易指令拆开,分布到若干个时间内,每个时间内具体如何交易由主动型交易算法进行判断。两者结合可达到单纯一种算法无法达到的效果。 算法交易的交易策略有三:一是降低交易费用。大单指令通常被拆分为若干个小单指令渐次进入市场。这个策略的成功程度可以通过比较同一时期的平均购买价格与成交量加权平均价来衡量。二是套利。典型的套利策略通常包含三四个金融资产,如根据外汇市场利率平价理论,国内债券的价格、以外币标价的债券价格、汇率现货及汇率远期合约价格之间将产生一定的关联,如果市场价格与该理论隐含的价格偏差较大,且超过其交易成本,则可以用四笔交易来确保无风险利润。股指期货的期限套利也可以用算法交易来完成。三是做市。做市包括在当前市场价格之上挂一个限价卖单或在当前价格之下挂一个限价买单,以便从买卖差价中获利。此外,还有更复杂的策略,如“基准点“算法被交易员用来模拟指数收益,而”嗅探器“算法被用来发现most动荡或most不稳定的市场。任何类型的模式识别或者预测模型都能用来启动算法交易。  量化交易一般会经过海量数据仿真测试和模拟操作等手进行检验,并依据一定的风险管理算法进行仓位和资金配置,实现风险most小化和收益most大化,但往往也会存在一定的潜在风险,具体包括: 1、历史数据的完整性。行情数据不完整可能导致模型与行情数据不匹配。行情数据自身风格转换,也可能导致模型失败,如交易流动性,价格波动幅度,价格波动频率等,而这一点是量化交易难以克服的。 2、模型设计中没有考虑仓位和资金配置,没有安全的风险评估和预防措施,可能导致资金、仓位和模型的不匹配,而发生爆仓现象。 3、网络中断,硬件故障也可能对量化交易产生影响。 4、同质模型产生竞争交易现象导致的风险。 5、单一投资品种导致的不可预测风险。 为规避或减小量化交易存在的潜在风险,可采取的策略有:保证历史数据的完整性;在线调整模型参数;在线选择模型类型;风险在线监测和规避等。 量化策略是指使用计算机作为工具,通过一套固定的逻辑来分析、判断和决策。量化策略既可以自动执行,也可以人工执行。 [2]  一个完整的量化策略包含哪些内容? 一个完整的策略需要包含输入、策略处理逻辑、输出;策略处理逻辑需要考虑选股、择时、仓位管理和止盈止损等因素。 选股 量化选股就是用量化的方法选择确定的投资组合,期望这样的投资组合可以获得超越大盘的投资收益。常用的选股方法有多因子选股、行业轮动选股、趋势跟踪选股等。 1 多因子选股 多因子选股是most经典的选股方法,该方法采用一系列的因子(比如市盈率、市净率、市销率等)作为选股标准,满足这些因子的股票被买入,不满足的被卖出。比如巴菲特这样的价值投资者就会买入低PE的股票,在PE回归时卖出股票。 2 风格轮动选股 风格轮动选股是利用市场风格特征进行投资,市场在某个时刻偏好大盘股,某个时刻偏好小盘股,如果发现市场切换偏好的规律,并在风格转换的初期介入,就可能获得较大的收益。 3 行业轮动选股 行业轮动选股是由于经济周期的的原因,有些行业启动后会有其他行业跟随启动,通过发现这些跟随规律,我们可以在前者启动后买入后者获得更高的收益,不同的宏观经济阶和货币政策下,都可能产生不同特征的行业轮动特点。 4 资金流选股 资金流选股是利用资金的流向来判断股票走势。巴菲特说过,股市短期是投票机,长期看一定是称重机。短期投资者的交易,就是一种投票行为,而所谓的票,就是资金。如果资金流入,股票应该会上涨,如果资金流出,股票应该下跌。所以根据资金流向就可以构建相应的投资策略。 5 动量反转选股 动量反转选股方法是利用投资者投资行为特点而构建的投资组合。索罗斯所谓的反身性理论强调了价格上涨的正反馈作用会导致投资者继续买入,这就是动量选股的基本根据。动量效应就是前一强势的股票在未来一时间继续保持强势。在正反馈到达无法持续的阶,价格就会崩溃回归,在这样的环境下就会出现反转特征,就是前一时间弱势的股票,未来一时间会变强。 6 趋势跟踪策略 当股价在出现上涨趋势的时候进行买入,而在出现下降趋势的时候进行卖出,本质上是一种追涨杀跌的策略,很多市场由于羊群效用存在较多的趋势,如果可以控制好亏损时的额度,坚持住对趋势的捕捉,长期下来是可以获得额外收益的。 择时 量化择时是指采用量化的方式判断买入卖出点。如果判断是上涨,则买入持有;如果判断是下跌,则卖出清仓;如果判断是震荡,则进行高抛低吸。  常用的择时方法有:趋势量化择时、市场情绪量化择时、有效资金量化择时、SVM量化择时等。 

7,763

社区成员

发帖
与我相关
我的任务
社区描述
VB 基础类
社区管理员
  • VB基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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