多功能DLL系统管理软件

易语言 2020-07-17 11:22:42

多功能DLL系统管理软件

写到文件 (取特定目录_ (#我的文档_, 假) + “\temp2.bat”, #服务备份)
.如果 (信息框 (“您正在优化系统服务,是否继续 ”, 64 + #系统等待 + #确认取消钮, “系统提示 ”) = #确认钮)
运行 (取特定目录_ (#我的文档_, 假) + “\temp2.bat”, 真, )
复制文件 (取特定目录_ (#我的文档_, 假) + “\服务备份.BAT”, 取运行目录 () + “\服务备份.BAT”)
运行 (取特定目录_ (#我的文档_, 假) + “\temp.bat”, 真, #隐藏窗口)
信息框 (“优化后某些服务不能正常使用请运行程序目录下的【服务备份.BAT】恢复优化前服务 ”, 64 + #系统等待, “系统提示”)
.否则
删除文件 (取特定目录_ (#我的文档_, 假) + “\temp.bat”)
删除文件 (取特定目录_ (#我的文档_, 假) + “\temp2.bat”)
.如果结束


.子程序 卸载DLL
.参数 参数_路径, 文本型
.参数 参数_PID, 整数型
.局部变量 进程PID, 整数型
.局部变量 DLL文本长度, 整数型
.局部变量 DLL名称, 文本型
.局部变量 lpbuf, 整数型
.局部变量 ret, 整数型
.局部变量 h, 整数型
.局部变量 对象句柄, 整数型
.局部变量 sa, 安全性结构
.局部变量 dwret, 整数型
.局部变量 hmodel

进程PID = 打开进程 (2035711, 假, 参数_PID)
.如果真 (进程PID = 0)
信息框 (“打开进程失败!”, 0, )
返回 ()
.如果真结束
DLL名称 = 参数_路径
DLL文本长度 = 取文本长度 (DLL名称) + 1
lpbuf = VirtualAllocEx (进程PID, 0, DLL文本长度, 4096, 64)
.如果真 (lpbuf = 0)
信息框 (“分配内存失败!”, 0, )
关闭句柄 (进程PID)
返回 ()
.如果真结束
ret = WriteProcessMemory (进程PID, lpbuf, 到字节集 (DLL名称) + { 0 }, DLL文本长度, 0)
.如果真 (ret = 0)
信息框 (“写内存失败!”, 0, )
VirtualFreeEx (进程PID, lpbuf, DLL文本长度, 16384)
返回 ()
.如果真结束
h = 取模块句柄_ (“kernel32.dll”)
h = 取进程地址_ (h, “GetModuleHandleA”)
对象句柄 = API_CreateRemoteThread (进程PID, sa, 0, h, lpbuf, 0, 0)
WaitForSingleObject (对象句柄, -1)
取中止线程退出代码_ (对象句柄, dwret)
hmodel = dwret
VirtualFreeEx (进程PID, lpbuf, DLL文本长度, 16384)
关闭句柄 (对象句柄)
h = 取模块句柄_ (“kernel32.dll”)
h = 取进程地址_ (h, “释放动态链接库_”)
对象句柄 = API_CreateRemoteThread (进程PID, sa, 0, h, hmodel, 0, 0)
WaitForSingleObject (对象句柄, -1)
关闭句柄 (对象句柄)
关闭句柄 (进程PID)