GF 公司的代码是经过一套“服务器--客户端”的软件实现加密的,也就是,只有获得授权的本地文本编辑软件才能正常打开代码文件。如果是直接将代码文件拷贝到优盘,拿到另一台未经授权的电脑上打开,那么势必都是乱码。经观察发现,这套文档加密软件对 *.sys 文件并不会加密,因为 sys 是系统文件。这样一来,就想到利用 AHK 写一个脚本,让其先用授权的文本编辑器(如记事本)打开这些代码文件,然后复制代码(模拟手动 ctrl + c 和 ctrl + v 的过程),并另存为 *.sys 文件,最后将所有的 sys 文件的后缀名去掉,即可还原所有的源代码文件。
实现很简单,代码如下:
[C++] 纯文本查看 复制代码 ; 下面的例子复制一个文件夹下的所有文件和文件夹到一个不同的文件夹中:
ErrorCount := CopyFilesAndFolders("H:\hang\*.*", "H:\juan")
if ErrorCount <> 0
MsgBox %ErrorCount% 个文件/文件夹不能被复制。
CopyFilesAndFolders(SourcePattern, DestinationFolder, DoOverwrite = false)
; 复制匹配 SourcePattern 的所有文件和文件夹到名为 DestinationFolder 的文件夹
; 并返回不能被复制的文件/文件夹的数量。
{
; 首先复制所有的文件(非文件夹):
FileCopy, %SourcePattern%, %DestinationFolder%, %DoOverwrite%
ErrorCount := ErrorLevel
; 现在复制所有的文件夹:
Loop, %SourcePattern%, 2 ; 2 表示“只获取文件夹”。
{
FileCopyDir, %A_LoopFileFullPath%, %DestinationFolder%\%A_LoopFileName%, %DoOverwrite%
ErrorCount += ErrorLevel
if ErrorLevel ; 报告每一个有问题的文件夹名称.
MsgBox 不能复制 %A_LoopFileFullPath% 到 %DestinationFolder%.
}
; 递归重命名所有普通文件
Loop, %DestinationFolder%\*, ,1
{
SysName = %A_LoopFileFullPath%.sys
FileMove, %A_LoopFileFullPath%, %SysName%
}
;依次复制所有文件
SourceFolder = H:\hang
Loop, %SourceFolder%\*, ,1
{
StringReplace, Tempath, A_LoopFileFullPath, hang, juan
CopyouPath = %Tempath%.sys
Run, notepad++.exe %A_LoopFileFullPath%
sleep 10
SetTitleMatchMode 2
WinActivate %A_LoopFileName%
sleep 10
Send ^a
sleep 10
Send ^c
sleep 10
Send !{f4}
sleep 10
Run, notepad++.exe %CopyouPath%
sleep 10
SetTitleMatchMode 2
WinActivate %A_LoopFileName%
sleep 10
Send ^a
sleep 10
Send ^v
sleep 10
Send ^s
sleep 10
Send !{f4}
}
return ErrorCount
} |