kk_lee69 发表于 2010-6-21 13:26:10

AU3 能否實現 備份硬碟MBR 跟還原 硬碟的MBR ??

在網上找不到合適簡單的方法可以備份硬碟的MBR 跟 還原硬碟的MBR..........

所以來這求救各位前輩.....看看 AU3可不可以寫出這個功能.......主要是想備份 EAZ-FIX 所修改過的 MBR 資料.............打算做為還原系統使用....

C.L 发表于 2010-6-21 16:04:01

纯AU3读写硬盘扇区好象还没有什么好办法,调用外部程序吧,比如:dsptw,很好的命令行程序。

kk_lee69 发表于 2010-6-22 00:23:27

回复 2# C.L

感謝提供方向我研究看看嚕.....^^

對了 題外話....C.L 兄.....可否請教..... 怎麼讀取 二進制檔案最後幾個字元??

會請教這個原因是..... 在一篇限定安裝程式運行三次就不準執行中....您提到可以把次數回寫到本身程式裡面.....

然後 這也跟您最近發的UDF 檔有點關係.....

我測試過直接在DOS下  @echo 1 >> TEST.exe   就可以把這個小資訊 寫入到二進制後面。。。。不影響 程式執行。。。。如果用這個方法。。。。怎樣可以讀到最後的字元呢??

C.L 发表于 2010-6-22 08:35:37

本帖最后由 C.L 于 2010-6-22 08:37 编辑

回复 3# kk_lee69

要读取二进制文件最后的字元,有不同的方法,比如,1、你读取整个文件,而且从读取的数据中截取最后的字符,2、用fileread读取指定的字符,3、调用WinAPI的二进制方式读取

用echo 1 >> test.exe这个DOS命令,写入文件的不单是1的ASCII码,还有其他的不可见字符,如果你要读取1这个变量,提取后要经过字符处理才能使用。

给你写个例子用fileread ()方式读取echo 1 >> test.exe 写入文件的二进制数据
$filename = "test.exe"
RunWait(@ComSpec & ' /c echo 1 >> "'&$filename&'"', @ScriptDir, @SW_HIDE)
FileRead ($filename,FileGetSize($filename)-4);不返回数据,相当于设置文件指针
$fdata=FileRead ($filename,4);读取最后4个二进制字符

If $fdata == "1" Or $fdata == 1 Then
        MsgBox (0,"","["&$fdata&"]")
Else
        MsgBox (0,"","$fdata 不等于1"&@CRLF& _
        "$fdata = ["&$fdata&"]"&@CRLF & _
        "echo 1 >> test.exe 写入文件的二制式是:"&StringToBinary ($fdata))
EndIf

kk_lee69 发表于 2010-6-22 08:58:15

本帖最后由 kk_lee69 于 2010-6-22 09:58 编辑

回复 4# C.L

文件指針的部份 我大概了解意思又學到一招....不過實際測試好像 無法作用...

老是讀到開頭的四個字元.......而不是 最後的四個字元??

是我程式版本的問題嗎??

是不是 需要加上 FILEOPEN 函數呢??

另外 在請教....既然已經可以讀到.....那麼可以殺掉嗎??

是需要 利用 FileWrite寫到另外的暫存檔... 然後再寫回來嗎??

還是有方法 可以直接寫入.....

C.L 发表于 2010-6-22 10:24:08

回复 5# kk_lee69

对不起,是我大意了,没说清楚,是需要先fileopen才行,设置指针要用到同一个文件的句柄

删除,用AU3我没找到可以直接删除的方法,我也是利用暂存文件再写回来的。

更改一下4#的代码吧
$filename = "test.exe"
RunWait(@ComSpec & ' /c echo 1 >> "'&$filename&'"', @ScriptDir, @SW_HIDE)
$file = FileOpen ($filename)
FileRead ($file,FileGetSize($filename)-4);不返回数据,相当于设置文件指针
$fdata=FileRead ($file,4);读取最后4个二进制字符
FileClose ($file)
If $fdata == "1" Or $fdata == 1 Then
        MsgBox (0,"","["&$fdata&"]")
Else
        MsgBox (0,"","$fdata 不等于1"&@CRLF& _
        "$fdata = ["&$fdata&"]"&@CRLF & _
        "echo 1 >> test.exe 写入文件的二制式是:"&StringToBinary ($fdata))
EndIf

kk_lee69 发表于 2010-6-22 11:04:52

回复 6# C.L

    感謝幫忙....學習了...C.L真是個熱心人^^
页: [1]
查看完整版本: AU3 能否實現 備份硬碟MBR 跟還原 硬碟的MBR ??