wpsjs加载项读取注册表
wils
创作者俱乐部成员
昨天有朋友问,在wpsjs里如何读取注册表里的一个路径信息
function aa()
{
const h = wps.ExecuteExcel4Macro(`CALL("Advapi32", "RegOpenKeyExA", "5JCJJN", ${0x80000001 << 0}, "SOFTWARE\\kingsoft\\Office\\6.0\\Common", 0, 1, 0)`)
const n = wps.ExecuteExcel4Macro(`CALL("Advapi32", "RegGetValueA", "7JCCJNJN", ${h}, "", "InstallRoot", 2, 0, 0, 0)`)
const b = wps.ExecuteExcel4Macro(`CALL("Kernel32", "VirtualAlloc", "JJJJJ", 0, ${n}, ${0x00001000 | 0x00002000}, 4)`)
wps.ExecuteExcel4Macro(`CALL("Advapi32", "RegGetValueA", "JJCCJNJN", ${h}, "", "InstallRoot", 2, 0, ${b}, ${n})`)
console.log(wps.ExecuteExcel4Macro(`CALL("Kernel32", "lstrcpyA", "1FJ", "", ${b})`))
wps.ExecuteExcel4Macro(`CALL("Kernel32", "VirtualFree", "JJJJ", ${b}, 0, ${0x00008000})`)
wps.ExecuteExcel4Macro(`CALL("Advapi32", "RegCloseKey", "JJ", ${h})`)
}由于wpsjs里目前没有ffi,只好用ExecuteExcel4Macro调用winapi
大概意思是:
打开注册表里的一个路径
第一次读取不接收数据,只获得结果的大小
开辟一块指定大小的空间
第二次读取接收数据
清理
如果是在jsa里用ffi写会方便准确很多
我不确定是否需要lstrcpyA来读取,似乎这样也能读出来
ExecuteExcel4Macro(`CALL("Advapi32", "RegGetValueA", "6JCCJNFN", ${h}, "", "InstallRoot", 2, 0, ${b}, ${n})`)希望大佬指点怎么写更准确,多谢
