同一个程序,普通帐号运行正常,但以System帐号来运行就出错.
我是用vb6来写的,
第一步: 引用 vfpdll.dll程序
有以下代码(片断):
- VB code
sub timer1_timer() call testendifsub test() on error resume next Dim vfp As New test.CData '创建vfpdll实例 vfpdll是一个用vfp8写的一个DLL文件 for i=0 to 100' ....省略n多代码..... log.writeLog "再次调用VFP.DLL来比较。" '向日志文件写入运行信息 vfp.returnStr = "" 'vfpDLL的返回值 vfp.FileName = sFile vfp.SCPATH = ksPath vfp.AnsPath = Form1.File3.Path If Err.Number <> 0 Then log.writeLog "vfpDLL这里有错误。"' ....省略n多代码... nextend sub
以上代码编译成EXE文件后,直接运行它(当前系统是XP,用户名是:administrator) 程序没有问题,可以正常运行.
但我把这个程序以SYSTEM帐号(比如在计划任务中创建一个运行本程序的计划并指定以System帐号来运行) 来运行,则程序只能运行到
log.writeLog "再次调用VFP.DLL来比较。" '向日志文件写入运行信息
因为我检查运行日志文件到""再次调用VFP.DLL来比较。"这句话后就结束了.
但程序未蹦溃,因为timer还在正常工作,(每过一个周期还能调用test过程)
我检查了权限,System对vfpdll.DLL拥有完全控制权限.
[解决办法]
改成如下代码,然后运行试试看。
或者单步调试一下
- VB.NET code
sub test() Dim vfp As New test.CData '创建vfpdll实例 vfpdll是一个用vfp8写的一个DLL文件 for i=0 to 100 try' ....省略n多代码..... log.writeLog "再次调用VFP.DLL来比较。" '向日志文件写入运行信息 vfp.returnStr = "" 'vfpDLL的返回值 vfp.FileName = sFile vfp.SCPATH = ksPath vfp.AnsPath = Form1.File3.Path ' ....省略n多代码... catch ex as excption log.writeLog ex.tostring end try nextend sub