起因
在开发绿化、安装和补丁程序时,我经常需要执行大量的系统操作。我希望找到一种易于使用的编程语言
条件
1.能创建简单的图形用户界面(GUI)程序
2.能轻松执行系统级操作(如删除文件、编辑注册表等)
3.能进行底层操作(例如进程注入、窗口注入等)
4.能实现解压缩功能
5.能够静态编译为单个可执行文件,或者将脚本嵌入解释器中生成单个可执行文件,并且体积不能太大(比如python打包后体积达大几十MB)
6.程序不能依赖于Windows内核之外的运行库。
目前采用的方法/编程语言:
pecmd:可视为cmd的扩展,它能够快速创建小型GUI,并支持复杂的逻辑处理。然而,其健壮性不足,且难以处理底层复杂操作,如进程注入。
AutoHotkey:虽然设计理念与pecmd不同,但对我来说效果相似,因此我也使用ahk进行编程。它同样存在上述缺陷。
C/C++:这是我目前使用较多的语言,它在其他方面无可挑剔。但它有(且仅有)一个致命的缺点需要解决:WinAPI操作过于繁琐。例如,删除文件夹前需要先清空文件夹内的所有文件,创建GUI时也需要编写大量代码。
注:我认为,解决本帖问题的最好方法就是找到一个简化WinAPI操作的c/c++封装库。如果没有期望的结果,可能我会写一个这样的封装库,但很费时间
已经放弃的方案:
批处理:GUI创建能力极低,效率低下,且健壮性差,无法执行底层操作。
PowerShell:安装程序需要考虑不支持PowerShell的系统,且几乎无法创建GUI。
VBScript:同PowerShell,且语法繁琐。
INF文件:无法创建GUI,处理自定义行为的能力不足。
NSIS:专业为创建安装程序而设计,但只能满足基本需求。对于个性化操作,即使使用插件也难以实现(如进程注入、二进制写入、进程存在判断、多线程解压等),且逻辑处理能力极弱。
Inno Setup:与NSIS类似,存在相同的限制。
Java Python CSharp NET 等依赖运行库的高级编程语言:需要运行库支持,因此不予考虑。