RegGetValue 使用 luajit ffi 的硬崩溃应用程序

问题描述

我正在尝试使用 Windows API 中的 RegGetValueA() ,但到目前为止我一直无法从中获得任何结果。充其量,我会收到“找不到文件”错误,最坏的情况是它在没有任何错误消息的情况下严重崩溃。

以下是我目前的代码;我不确定什么是相关的,什么是不相关的,以及可能导致问题的原因与否。我只有一点点 C 知识,所以请尽量保持简单。

ffi.cdef([[
        typedef void *  HKEY;
        typedef HKEY *  PHKEY;
        typedef unsigned long DWORD;
        int RegGetValueA(HKEY handle,const char* path,const char* value,int filter_flags,void* unused,char *result,DWORD* size);
]])

    local size = ffi.new('DWORD[1]')
    size = 1024
    local data = ffi.new('char['..size..']')
    local dptr = ffi.cast('char*',data)
    local lenptr = ffi.cast('DWORD*',size)
    test = reg.RegGetValueA(ffi.cast("HKEY",ffi.cast("uintptr_t",0x80000002)),"SOFTWARE\\Microsoft\\Speech\\Voices\\Tokens\\CereVoice Heather 5.0.1","CLSID",0x0000ffff,nil,dptr,lenptr)

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)