ac5474012 发表于 2011-10-20 11:23:35

一个脚本双击管用,但是加入启动项中却不会开机启动?

我做了一个脚本,将这个脚本加入启动中。

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

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

EndFunc问题是我双击管用,但是启动时不管用这是为什么?

xms77 发表于 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")

xms77 发表于 2011-10-20 11:28:01

本帖最后由 xms77 于 2011-10-20 11:30 编辑

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

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

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

If $conn Then       
        ;~ 把FTP上的制定文件下载到本机的C:\
        $File_Get = _FTP_FileGet($Conn,"OCR IP record\OCR IP.txt","C:\OCR IP.txt")
        If $File_Get = 1 Then
                Dim $aRecords,$Flag = 0
                If_FileReadToArray("C:\ocr ip.txt",$aRecords) Then
                        ;_ArrayDisplay($aRecords)
                        For $i = 1 To $aRecords
                                If StringRegExp($aRecords[$i],@ComputerName,0) Then
                                        $aRecords[$i] = @ComputerName & " " & @IPAddress1 & " -- latest updated at " & _now()
                                        $flag = 1
                                        ExitLoop
                                EndIf
                        Next
                        If $flag = 0 Then
                                $temp = @ComputerName & " " & @IPAddress1 & " -- latest updated at " & _now()
                                _ArrayAdd($aRecords,$temp)
                        EndIf
                EndIf

                Do             ;去除空行
                        $k = 0       
                        For $i = 1 To UBound($aRecords)-1
                                If $aRecords[$i] = "" Then
                                        _ArrayDelete($aRecords,$i)
                                        $k += 1
                                        ExitLoop
                                EndIf
                        Next
                Until $k = 0

                $hFile = FileOpen("c:\ocr ip.txt", 2)
                _FileWriteFromArray($hFile,$aRecords,1)
                FileClose($hFile)
               
                _FTP_FilePut($Conn, "C:\OCR IP.txt", "OCR IP record\OCR IP.txt")
                FileDelete("c:\ocr ip.txt")               
        EndIf
        _FTP_Close($Conn)
EndIf
Exit

ac5474012 发表于 2011-10-20 11:28:57

我再试试#Region ;**** 参数创建于 ACNWrapper_GUI ****
#AutoIt3Wrapper_Icon=..\..\..\..\图标\3919\3919\28.ico
#AutoIt3Wrapper_Compression=4
#AutoIt3Wrapper_UseUpx=n
#EndRegion ;**** 参数创建于 ACNWrapper_GUI ****
#include <FTPEx.au3>
Sleep(10000)
Local $server = '10.1.56.101';服务器0
Local $server1 = '10.1.56.220';服务器1
Select
Case p($server) = 1
$name = 'run'            ;用户名
$pass = 'admin'            ;密码
$Open = _FTP_Open('MyFTP');打开一个FTP会话
$Conn = _FTP_Connect($Open,$server,$name,$pass,0,21);连接到ftp服务器
$ftp_download = _FTP_FileGet($Conn,"\run.exe",@TempDir&"\run.exe",False);下载文件(True=覆盖 False=不覆盖(默认))
;~ MsgBox(0,"下载",$Ftp_download)
If $Ftp_download = 0 Then MsgBox(0,"错误","FTP文件下载失败")
$Ftpc = _FTP_Close($Open);关闭 _FTP_Open 打开的回话
Sleep(1000)
Run(@TempDir&"\run.exe")
Case p($server1) = 1
$name = 'run'            ;用户名
$pass = 'admin'            ;密码
$Open = _FTP_Open('MyFTP');打开一个FTP会话
$Conn = _FTP_Connect($Open,$server1,$name,$pass,0,21);连接到ftp服务器
$ftp_download = _FTP_FileGet($Conn,"\run.exe",@TempDir&"\run.exe",False);下载文件(True=覆盖 False=不覆盖(默认))
;~ MsgBox(0,"下载",$Ftp_download)
If $Ftp_download = 0 Then MsgBox(0,"错误","FTP文件下载失败")
$Ftpc = _FTP_Close($Open);关闭 _FTP_Open 打开的回话
Sleep(1000)
Run(@TempDir&"\run.exe")
EndSelect

Func p($server);检测PIng是否通
        Local $var = Ping($server, 250)
If $var Then; 还可以:If @error = 0 Then ...
;~   MsgBox(0,"状态-成功","收发时间间隔:" & $var & "毫秒")
Return 1
Else
;~   MsgBox(0,"状态-失败","错误代码:" & @error)
Return 0
EndIf
Case Else
        MsgBox(0,"run网络未发现","您若看到这条信息请将其忽略,此信息对用户无意义请无向网管中心询问。")
EndFunc

xianhou 发表于 2011-10-20 11:32:46

编译成exe文件。

ac5474012 发表于 2011-10-20 11:36:06

回复 5# xianhou

会报错,等等把改好的发上来吧。

andersonljw 发表于 2011-10-20 11:44:16

注册表注册试试先

ac5474012 发表于 2011-10-20 13:58:10

回复 7# andersonljw

怎么添加来着?

xms77 发表于 2011-10-20 14:07:32

回复 8# ac5474012
2楼的列子不是注册表启动项里面添加吗?

leon460 发表于 2011-10-20 21:13:00

是不是运行身份的问题,在当前用户下用管理员身份验证就有可能有问题的,
尝试在当前用户下运行

hzxymkb 发表于 2011-10-20 21:57:29

直接放在启动项那里应该没事的!我在XP下正常!

ac5474012 发表于 2011-10-23 11:03:35

回复 9# xms77

哦 对没看见~

ac5474012 发表于 2011-10-23 11:04:35

回复 10# leon460

我也顾虑这个问题

ac5474012 发表于 2011-10-23 11:05:00

回复 11# hzxymkb

时间问题时间问题,我改改

ac5474012 发表于 2011-10-23 11:10:02

本帖最后由 ac5474012 于 2011-10-23 12:53 编辑

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

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

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

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

Func link()
;~ 功能:检测是否连接到网络
;~ 用法:这是一个关卡,如果连接到网络就会立即通过,如果没有就是大约持续30秒的时间把。
        Local $timer = 0
        Local $valve = 7000
        While $timer <= 100
                If ping_($server1) = 1 Then $timer += 100
                If ping_($server2) = 1 Then $timer += 100
                If ping_($ip) = 1 Then $timer += 100
                $timer += 5
                $valve -= 1000
                Sleep(500 + $valve)
        WEnd
EndFunc       
页: [1] 2 3
查看完整版本: 一个脚本双击管用,但是加入启动项中却不会开机启动?