找回密码
 加入
搜索
查看: 10621|回复: 7

[系统综合] [已解决]求助:一段ghost代码,64位不运行,32下运行正常

  [复制链接]
发表于 2014-8-17 08:17:08 | 显示全部楼层 |阅读模式
本帖最后由 nqawen 于 2014-8-27 11:32 编辑

用这段代码(不是本人写的)在win7 32位下使用一切正常,但在win7 64下使用,不正常,最明显的表现是MsgBox(4, "", "程序准备就绪! 您是否要立即重装系统? " & @CRLF & @CRLF & "单击“是”:   立即重启安装系统。" & @CRLF & "单击“否”:   稍后手动重启安装系统。")不会出现,。。。。程序也正常退不出。

请高手帮忙解决
谢了
Func _RESTORE()
         $path = $downdir & "" & $sName
         $D1 = StringLeft($path, 2)
         If FileExists(@HomeDrive & "\dos.bat") = 0 Then
                 FileInstall("dos.bat", @HomeDrive & "\RESTORE.bat", 1)
                 FileSetAttrib(@HomeDrive & "\RESTORE.bat", "-RSH")
         EndIf
         $bakdrive = IniRead(@SystemDir & "\Ghost.ini", "HardDisk", @HomeDrive, "1:1")
         $bakname = StringTrimLeft($downdir & "" & $sName, 2)
         $BFP = IniRead(@SystemDir & "\Ghost.InI", "HardDisk", $D1, "1:2")
         $bat2 = FileOpen(@HomeDrive & "\RESTORE.bat", 2)
         FileWrite($bat2, "@echo off" & @CRLF)
         FileWrite($bat2, "xmsman -c" & @CRLF)
         FileWrite($bat2, "Z:\Ghost.exe -nousb -noide -clone,mode=pload,src=" & $BFP & "" & $bakname & ":1,dst=" & $bakdrive & " -crcignore -sure -rb" & @CRLF)
         FileClose($bat2)
         FileSetAttrib(@HomeDrive & "\RESTORE.bat", "+RSH")
         If @OSVersion = "WIN_2000" Or @OSVersion = "WIN_2003" Or @OSVersion = "WIN_XP" Then
                 FileSetAttrib(@HomeDrive & "\boot.ini", "-RSH")
                 If Not (FileExists(@HomeDrive & "\boot.dna")) Then
                         FileCopy(@HomeDrive & "\boot.ini", @HomeDrive & "\boot.dna")
                        FileSetAttrib(@HomeDrive & "\boot.dna", "+RSH")
                 EndIf
                 IniWrite(@HomeDrive & "\boot.ini", "boot loader", "timeout", "0")
                 IniWrite(@HomeDrive & "\boot.ini", "boot loader", "default", @HomeDrive & "\grldr")
                 IniWrite(@HomeDrive & "\boot.ini", "operating systems", @HomeDrive & "\grldr", "一键还原系统")
                 FileSetAttrib(@HomeDrive & "\boot.ini", "+RSH")
         EndIf
         If FileExists(@HomeDrive & "\grldr") Then
                 FileSetAttrib(@HomeDrive & "\grldr", "-RSH")
                 FileCopy(@HomeDrive & "\grldr", @HomeDrive & "\grldr.dna")
                 FileSetAttrib(@HomeDrive & "\grldr.dna", "+RSH")
        EndIf
         FileInstall("grldr", @HomeDrive & "\grldr", 1)
         FileSetAttrib(@HomeDrive & "\grldr", "+RSH")
         If @OSVersion = "WIN_VISTA" Then
                 FileSetAttrib(@HomeDrive & "\boot", "-RSH")
                 RunWait(@ComSpec & " /c " & @WindowsDir & "\system32\bcdedit /export C:\bcd.dna", @ScriptDir, @SW_HIDE)
                 FileInstall("bcdedit.cmd", @SystemDir & "\bcdedit.cmd", 1)
                 RunWait(@ComSpec & " /c " & @SystemDir & "\bcdedit.cmd", @SystemDir, @SW_HIDE)
                 If FileExists(@HomeDrive & "\grldr.mbr") = 1 Then
                         FileSetAttrib(@HomeDrive & "\grldr.mbr", "-RSH")
                         FileCopy(@HomeDrive & "\grldr.mbr", @HomeDrive & "\mbr.dna")
                         FileSetAttrib(@HomeDrive & "\mbr.dna", "+RSH")
                 EndIf
                 FileInstall("grldr.mbr", @HomeDrive & "\grldr.mbr", 1)
                 FileSetAttrib(@HomeDrive & "\grldr.mbr", "+RSH")
         EndIf
         If @OSVersion = "WIN_7" Then
                 FileSetAttrib(@HomeDrive & "\boot", "-RSH")
                 RunWait(@ComSpec & " /c " & @WindowsDir & "\system32\bcdedit /export C:\bcd.dna", @ScriptDir, @SW_HIDE)
                 FileInstall("bcdedit.cmd", @SystemDir & "\bcdedit.cmd", 1)
                RunWait(@ComSpec & " /c " & @SystemDir & "\bcdedit.cmd", @SystemDir, @SW_HIDE)
                If FileExists(@HomeDrive & "\grldr.mbr") = 1 Then
                        FileSetAttrib(@HomeDrive & "\grldr.mbr", "-RSH")
                         FileCopy(@HomeDrive & "\grldr.mbr", @HomeDrive & "\mbr.dna")
                         FileSetAttrib(@HomeDrive & "\mbr.dna", "+RSH")
                 EndIf
                 FileInstall("grldr.mbr", @HomeDrive & "\grldr.mbr", 1)
                 FileSetAttrib(@HomeDrive & "\grldr.mbr", "+RSH")
         EndIf
         FileInstall("Ghost.exe", @HomeDrive & "\Ghost.exe", 1)
         FileInstall("ghost.img", @HomeDrive & "\ghost.img", 1)
         FileSetAttrib(@HomeDrive & "\Ghost.exe", "+RSH")
         FileSetAttrib(@HomeDrive & "\ghost.img", "+RSH")
         FileSetAttrib(@HomeDrive & "\BOOT", "+H")
         FileDelete(@SystemDir & "\Ghost.ini")
        GUISetState(@SW_HIDE, $Form1)
         GUISetState(@SW_HIDE, $Form2)
         $ask6 = MsgBox(4, "", "程序准备就绪! 您是否要立即重装系统? " & @CRLF & @CRLF & "单击“是”:   立即重启安装系统。" & @CRLF & "单击“否”:   稍后手动重启安装系统。")
         If $ask6 = 6 Then
                Shutdown(6)
                 ;ElseIf $ask6 = 7 Then
                ;GUISetState(@SW_SHOW, $Form2)
        EndIf
         
 EndFunc   ;==>_RESTORE
发表于 2014-8-17 09:38:04 | 显示全部楼层
64位编译试试 GHOST也换成64位版本  我只是猜测 没测试
 楼主| 发表于 2014-8-17 17:16:44 | 显示全部楼层
回复 2# yinbinly
换了,,在64位下就是不成功,,,,都弄了半天了,谢谢你
发表于 2014-8-17 17:28:19 | 显示全部楼层
32位程序在64位系统下有重定向问题,例如@SystemDir会被重定向到syswow64而不是system32。

要么你编译一个X64的程序在X64系统下运行,这样不用改代码;要么你使用那个API的方法关闭重定向。注意,即便你关闭重定向,@SystemDir的值也可能有问题,建议你直接写成@WindowsDir & '\system32'。
 楼主| 发表于 2014-8-17 21:06:10 | 显示全部楼层
回复 4# skyfree

原来是这样,谢谢S大的指导
 楼主| 发表于 2014-8-17 21:24:32 | 显示全部楼层
回复 5# zhao_ming

谢谢,,应是S 大说的问题
发表于 2014-8-18 09:02:30 | 显示全部楼层
或者是权限问题~  用管理员权限试下~
 楼主| 发表于 2014-8-27 11:28:07 | 显示全部楼层
问题解决了,,在S大的基础上,64位下必须关了安全软件,才可以。谢谢各位
您需要登录后才可以回帖 登录 | 加入

本版积分规则

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

GMT+8, 2024-5-3 02:39 , Processed in 0.083562 second(s), 23 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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