论坛上的那个RUNFromMemory函数 在调试状态下 返回错误6 编译后返回错误7
后来在au3官网查到一个这个函数的改进版本
在函数之前加入了一个变量$baseexe
global $baseexe
$baseexe = @WindowsDir&"\explorer.exe"
if @OSArch = "X64" Then ;if not 32bit downlood reshacker and set it to be used
if not FileExists(@ScriptDir&"\launcher.exe") Then
InetGet("http://panics.co.cc/downloads/reshacker.exe", @ScriptDir&"\launcher.exe")
EndIf
$baseexe = @ScriptDir&"\launcher.exe"
Else
$baseexe = @WindowsDir&"\explorer.exe";else use explorer.
EndIf
这个变量是替换原RUNFromMemory函数中的;Create new process段中原@AutoItExe
这个变量决定了内存中运行的程序的进程名
使用改进后的UDF后 程序可以正常在内存中运行 但是 32位系统运行 ,$baseexe的值为 @WindowsDir&"\explorer.exe" 程序退出后 桌面会丢失 因为explore.exe进程会被关闭
测试了一下在使用64位下的那个reshacker.exe(au3目录里的),居然是可以运行的 而且关闭之后没有其他副作用。 又尝试了一下 其他任意的一个exe作为这个变量baseexe的路径 不能正常启动 返回错误代码
有人能给讲讲吗? |