ll_libload kernel, "kernel32.dll"
ll_getproc GetEnvironmentVariable, "GetEnvironmentVariableA", kernel
ll_getproc SetEnvironmentVariable, "SetEnvironmentVariableA", kernel
#module
#deffunc getev str, val, int
mref name, 32 : mref ev, 25 : mref size, 2
ll_getptr name : ll_ret prm.0
ll_getptr ev : ll_ret prm.1
prm.2 = (size = 0) * 64 + size
memset ev, , prm.2
ll_callfunc prm, 3, GetEnvironmentVariable@
return
#deffunc delev str
mref name, 32
mref stt, 64
ll_getptr name : ll_ret prm.0
prm.1 = 0
ll_callfunc prm, 2, SetEnvironmentVariable@
ll_ret prm : stt = prm
return
#global
evname = "TMP"
getev evname, ev
mes evname + " = [" + ev + "]"
delev evname // 削除実行(現在のプロセス側がアクティブになる)
getev evname, ev
mes evname + " = [" + ev + "]"
mes "※削除されたように見えますがシステム環境変数は変わってません"
stop
|