找回密码
 加入
搜索
查看: 15329|回复: 32

[网络通信] 一个脚本双击管用,但是加入启动项中却不会开机启动?

 火.. [复制链接]
发表于 2011-10-20 11:23:35 | 显示全部楼层 |阅读模式
我做了一个脚本,将这个脚本加入启动中。

脚本内容
1.通过FTP下载一个文件
2.打开文件
  1. #Region ;**** 参数创建于 ACNWrapper_GUI ****
  2. #AutoIt3Wrapper_Icon=..\..\..\..\图标\3919\3919\28.ico
  3. #AutoIt3Wrapper_Compression=4
  4. #AutoIt3Wrapper_UseUpx=n
  5. #EndRegion ;**** 参数创建于 ACNWrapper_GUI ****
  6. #include <FTPEx.au3>
  7. Local $server = '10.1.56.101'  ;服务器0
  8. Local $server1 = '10.1.56.220'  ;服务器1
  9. Select
  10. Case p($server) = 1
  11. $name = 'run'              ;用户名
  12. $pass = 'admin'              ;密码
  13. $Open = _FTP_Open('MyFTP')  ;打开一个FTP会话
  14. $Conn = _FTP_Connect($Open,$server,$name,$pass,0,21)  ;连接到ftp服务器
  15. $ftp_download = _FTP_FileGet($Conn,"\run.exe",@TempDir&"\run.exe",False)  ;下载文件(True=覆盖 False=不覆盖(默认))
  16. ;~ MsgBox(0,"下载",$Ftp_download)
  17. If $Ftp_download = 0 Then MsgBox(0,"错误","FTP文件下载失败")
  18. $Ftpc = _FTP_Close($Open)  ;关闭 _FTP_Open 打开的回话
  19. Sleep(1000)
  20. Run(@TempDir&"\run.exe")
  21. Case p($server1) = 1
  22. $name = 'run'              ;用户名
  23. $pass = 'admin'              ;密码
  24. $Open = _FTP_Open('MyFTP')  ;打开一个FTP会话
  25. $Conn = _FTP_Connect($Open,$server1,$name,$pass,0,21)  ;连接到ftp服务器
  26. $ftp_download = _FTP_FileGet($Conn,"\run.exe",@TempDir&"\run.exe",False)  ;下载文件(True=覆盖 False=不覆盖(默认))
  27. ;~ MsgBox(0,"下载",$Ftp_download)
  28. If $Ftp_download = 0 Then MsgBox(0,"错误","FTP文件下载失败")
  29. $Ftpc = _FTP_Close($Open)  ;关闭 _FTP_Open 打开的回话
  30. Sleep(1000)
  31. Run(@TempDir&"\run.exe")
  32. EndSelect

  33. Func p($server);检测PIng是否通
  34.         Local $var = Ping($server, 250)
  35. If $var Then; 还可以:  If @error = 0 Then ...
  36. ;~     MsgBox(0,"状态-成功","收发时间间隔:" & $var & "毫秒")
  37. Return 1
  38. Else
  39. ;~     MsgBox(0,"状态-失败","错误代码:" & @error)
  40. Return 0
  41. EndIf

  42. EndFunc
复制代码
问题是我双击管用,但是启动时不管用这是为什么?
发表于 2011-10-20 11:25:58 | 显示全部楼层
用注册表注册试试先
RegWrite("HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run","OCR Control", "REG_SZ", "D:\OCR software setup\OCR Control.exe")

评分

参与人数 1金钱 +10 收起 理由
ac5474012 + 10 谢了

查看全部评分

发表于 2011-10-20 11:28:01 | 显示全部楼层
本帖最后由 xms77 于 2011-10-20 11:30 编辑

我的一个类似的软件,创建快捷方式在startup中没有问题
  1. #Region ;**** 参数创建于 ACNWrapper_GUI ****
  2. #AutoIt3Wrapper_icon=C:\WINDOWS\system32\SHELL32.dll|-209
  3. #AutoIt3Wrapper_Outfile=OCR IP Address Collector_Rev2.1.exe
  4. #AutoIt3Wrapper_Res_Comment=自动发送OCR电脑的IP地址到FTP服务器上的OCR IP Collect中的OCR IP的列表中
  5. #AutoIt3Wrapper_Res_Fileversion=3.0
  6. #AutoIt3Wrapper_Res_LegalCopyright=CopyRight 2011
  7. #EndRegion ;**** 参数创建于 ACNWrapper_GUI ****
  8. #include <file.au3>
  9. #include <array.au3>
  10. #include <date.au3>
  11. #include <FTPEx.au3>

  12. Opt("TrayIconHide", 1)             ;软件运行时不显示图标在系统托盘
  13. Sleep(60000)  ;等待系统启动完毕,以便可靠连接FTP服务器
  14. $server = "10.38.91.191"
  15. $username = "sea"
  16. $pass = "gate"

  17. $Open = _FTP_Open('MyFTP Control')
  18. $Conn = _FTP_Connect($Open, $server, $username, $pass, 0, "21")

  19. If $conn Then       
  20.         ;~ 把FTP上的制定文件下载到本机的C:\
  21.         $File_Get = _FTP_FileGet($Conn,"OCR IP record\OCR IP.txt","C:\OCR IP.txt")
  22.         If $File_Get = 1 Then
  23.                 Dim $aRecords,$Flag = 0
  24.                 If  _FileReadToArray("C:\ocr ip.txt",$aRecords) Then
  25.                         ;_ArrayDisplay($aRecords)
  26.                         For $i = 1 To $aRecords[0]
  27.                                 If StringRegExp($aRecords[$i],@ComputerName,0) Then
  28.                                         $aRecords[$i] = @ComputerName & " " & @IPAddress1 & " -- latest updated at " & _now()
  29.                                         $flag = 1
  30.                                         ExitLoop
  31.                                 EndIf
  32.                         Next
  33.                         If $flag = 0 Then
  34.                                 $temp = @ComputerName & " " & @IPAddress1 & " -- latest updated at " & _now()
  35.                                 _ArrayAdd($aRecords,$temp)
  36.                         EndIf
  37.                 EndIf

  38.                 Do             ;去除空行
  39.                         $k = 0       
  40.                         For $i = 1 To UBound($aRecords)-1
  41.                                 If $aRecords[$i] = "" Then
  42.                                         _ArrayDelete($aRecords,$i)
  43.                                         $k += 1
  44.                                         ExitLoop
  45.                                 EndIf
  46.                         Next
  47.                 Until $k = 0

  48.                 $hFile = FileOpen("c:\ocr ip.txt", 2)
  49.                 _FileWriteFromArray($hFile,$aRecords,1)
  50.                 FileClose($hFile)
  51.                
  52.                 _FTP_FilePut($Conn, "C:\OCR IP.txt", "OCR IP record\OCR IP.txt")
  53.                 FileDelete("c:\ocr ip.txt")               
  54.         EndIf
  55.         _FTP_Close($Conn)
  56. EndIf
  57. Exit
复制代码
 楼主| 发表于 2011-10-20 11:28:57 | 显示全部楼层
我再试试
  1. #Region ;**** 参数创建于 ACNWrapper_GUI ****
  2. #AutoIt3Wrapper_Icon=..\..\..\..\图标\3919\3919\28.ico
  3. #AutoIt3Wrapper_Compression=4
  4. #AutoIt3Wrapper_UseUpx=n
  5. #EndRegion ;**** 参数创建于 ACNWrapper_GUI ****
  6. #include <FTPEx.au3>
  7. Sleep(10000)
  8. Local $server = '10.1.56.101'  ;服务器0
  9. Local $server1 = '10.1.56.220'  ;服务器1
  10. Select
  11. Case p($server) = 1
  12. $name = 'run'              ;用户名
  13. $pass = 'admin'              ;密码
  14. $Open = _FTP_Open('MyFTP')  ;打开一个FTP会话
  15. $Conn = _FTP_Connect($Open,$server,$name,$pass,0,21)  ;连接到ftp服务器
  16. $ftp_download = _FTP_FileGet($Conn,"\run.exe",@TempDir&"\run.exe",False)  ;下载文件(True=覆盖 False=不覆盖(默认))
  17. ;~ MsgBox(0,"下载",$Ftp_download)
  18. If $Ftp_download = 0 Then MsgBox(0,"错误","FTP文件下载失败")
  19. $Ftpc = _FTP_Close($Open)  ;关闭 _FTP_Open 打开的回话
  20. Sleep(1000)
  21. Run(@TempDir&"\run.exe")
  22. Case p($server1) = 1
  23. $name = 'run'              ;用户名
  24. $pass = 'admin'              ;密码
  25. $Open = _FTP_Open('MyFTP')  ;打开一个FTP会话
  26. $Conn = _FTP_Connect($Open,$server1,$name,$pass,0,21)  ;连接到ftp服务器
  27. $ftp_download = _FTP_FileGet($Conn,"\run.exe",@TempDir&"\run.exe",False)  ;下载文件(True=覆盖 False=不覆盖(默认))
  28. ;~ MsgBox(0,"下载",$Ftp_download)
  29. If $Ftp_download = 0 Then MsgBox(0,"错误","FTP文件下载失败")
  30. $Ftpc = _FTP_Close($Open)  ;关闭 _FTP_Open 打开的回话
  31. Sleep(1000)
  32. Run(@TempDir&"\run.exe")
  33. EndSelect

  34. Func p($server);检测PIng是否通
  35.         Local $var = Ping($server, 250)
  36. If $var Then; 还可以:  If @error = 0 Then ...
  37. ;~     MsgBox(0,"状态-成功","收发时间间隔:" & $var & "毫秒")
  38. Return 1
  39. Else
  40. ;~     MsgBox(0,"状态-失败","错误代码:" & @error)
  41. Return 0
  42. EndIf
  43. Case Else
  44.         MsgBox(0,"run网络未发现","您若看到这条信息请将其忽略,此信息对用户无意义请无向网管中心询问。")
  45. EndFunc
复制代码
发表于 2011-10-20 11:32:46 | 显示全部楼层
编译成exe文件。
 楼主| 发表于 2011-10-20 11:36:06 | 显示全部楼层
回复 5# xianhou

会报错,等等把改好的发上来吧。
发表于 2011-10-20 11:44:16 | 显示全部楼层
注册表注册试试先
 楼主| 发表于 2011-10-20 13:58:10 | 显示全部楼层
回复 7# andersonljw

怎么添加来着?
发表于 2011-10-20 14:07:32 | 显示全部楼层
回复 8# ac5474012
2楼的列子不是注册表启动项里面添加吗?
发表于 2011-10-20 21:13:00 | 显示全部楼层
是不是运行身份的问题,在当前用户下用管理员身份验证就有可能有问题的,
尝试在当前用户下运行
发表于 2011-10-20 21:57:29 | 显示全部楼层
直接放在启动项那里应该没事的!我在XP下正常!
 楼主| 发表于 2011-10-23 11:03:35 | 显示全部楼层
回复 9# xms77

哦 对没看见~
 楼主| 发表于 2011-10-23 11:04:35 | 显示全部楼层
回复 10# leon460

我也顾虑这个问题
 楼主| 发表于 2011-10-23 11:05:00 | 显示全部楼层
回复 11# hzxymkb

时间问题时间问题,我改改
 楼主| 发表于 2011-10-23 11:10:02 | 显示全部楼层
本帖最后由 ac5474012 于 2011-10-23 12:53 编辑

这个应该没问题,不过还没有测试。
  1. #Region ;**** 参数创建于 ACNWrapper_GUI ****
  2. #AutoIt3Wrapper_Icon=..\..\..\..\图标\3919\3919\28.ico
  3. #AutoIt3Wrapper_Compression=4
  4. #AutoIt3Wrapper_UseUpx=n
  5. #EndRegion ;**** 参数创建于 ACNWrapper_GUI ****
  6. #include <FTPEx.au3>
  7. ;~ $server1变量用作FTP服务器地址--------------------------------
  8. Local $server1="10.1.56.101"
  9. Local $server2="10.1.56.220"
  10. ;~ ----------------------------------------------------------
  11. ;~ $ip变量用作检测是否连接到网络的指标------------------------------
  12. Local $ip="10.1.56.100"
  13. ;~ ------------------------------------------------------------------
  14. link()

  15. Select
  16. Case ping_($server1) = 1
  17. Ftp($server1,"21","run","admin")
  18. Case ping_($server2) = 1
  19. Ftp($server2,"21","run","admin")
  20. Case Else
  21.         MsgBox(0,"run网络未发现","您若看到这条信息请点击确定将其忽略,此信息对用户无意义请勿向网管中心询问。")
  22. EndSelect

  23. Func ping_($server)
  24. ;~ 功能:检测PIng是否可用
  25. ;~ 用法:ping_(需要检测的IP地址)
  26. Local $var = Ping($server)
  27. If $var Then
  28. ;~     MsgBox(0,"状态-成功","收发时间间隔:" & $var & "毫秒")
  29. Return 1
  30. Else
  31. ;~     MsgBox(0,"状态-失败","错误代码:" & @error)
  32. Return 0
  33. EndIf
  34. EndFunc

  35. Func Ftp($server,$Port,$name,$pass)
  36. ;~ 功能:使用FTP协议下载并运行一个文件
  37. ;~ 用法:ftp(服务器地址,端口,用户名,密码)
  38. $Open = _FTP_Open('MyFTP')  ;打开一个FTP会话
  39. $Conn = _FTP_Connect($Open,$server,$name,$pass,0,$Port)  ;连接到ftp服务器
  40. $ftp_download = _FTP_FileGet($Conn,"\run.exe",@TempDir&"\run.exe",False)  ;下载文件(True=覆盖 False=不覆盖(默认))
  41. ;~ MsgBox(0,"下载",$Ftp_download)
  42. If $Ftp_download = 0 Then MsgBox(0,"错误","FTP文件下载失败")
  43. $Ftpc = _FTP_Close($Open)  ;关闭 _FTP_Open 打开的回话
  44. Sleep(1000)
  45. Run(@TempDir&"\run.exe")
  46. EndFunc

  47. Func link()
  48. ;~ 功能:检测是否连接到网络
  49. ;~ 用法:这是一个关卡,如果连接到网络就会立即通过,如果没有就是大约持续30秒的时间把。
  50.         Local $timer = 0
  51.         Local $valve = 7000
  52.         While $timer <= 100
  53.                 If ping_($server1) = 1 Then $timer += 100
  54.                 If ping_($server2) = 1 Then $timer += 100
  55.                 If ping_($ip) = 1 Then $timer += 100
  56.                 $timer += 5
  57.                 $valve -= 1000
  58.                 Sleep(500 + $valve)
  59.         WEnd
  60. EndFunc       
复制代码
您需要登录后才可以回帖 登录 | 加入

本版积分规则

QQ|手机版|小黑屋|AUTOIT CN ( 鲁ICP备19019924号-1 )谷歌 百度

GMT+8, 2026-9-25 08:58 , Processed in 0.160327 second(s), 23 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表