-
-
Notifications
You must be signed in to change notification settings - Fork 782
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Can I use /**/ in Windows registry string? #1032
Comments
这块是可以改进,但是需要花时间改造现有 https://github.com/xmake-io/xmake/blob/master/core/src/xmake/winos/registry_query.c 的实现,加上 lua 的 模式匹配,我暂时没时间去看这块,即使要支持,也要等 2.3.9 之后的下一个版本了 当前 2.3.9 版本,我快要发版了,目前不考虑加新特性和改进了,只解决稳定性问题 |
我支持上了,你可以看下这个:#1162 通过 winos.registry_keys 模式匹配获取需要的 key path 列表,如果 keypath 固定,仅仅想模式匹配 value 名,可以用 winos.registry_values 获取匹配的值路径 获取到对应 keypath 和 value name 后,就可以用 winos.registry_query 获取实际的 value 值 local keypaths = winos.registry_keys("HKEY_LOCAL_MACHINE\\SOFTWARE\\*\\Windows NT\\*\\CurrentVersion\\AeDebug")
for _, keypath in ipairs(keypaths) do
print(winos.registry_query(keypath .. ";Debugger"))
end
local valuepaths = winos.registry_values("HKEY_LOCAL_MACHINE\\SOFTWARE\\xx\\AeDebug;Debug*")
for _, valuepath in ipairs(valuepaths) do
print(winos.registry_query(valuepath))
end winos.registry_values主要用于匹配 ;xxx* 的值名,获取全路径列表,winos.registry_keys 可以用于匹配前面的 key 路径,支持 ** 递归匹配,但通常建议只做 |
我发现这个方法可以成功访问到REG_SZ类型和REG_DWORD类型,但对REG_EXPAND_SZ类型无效,报错
|
我回头看下 |
那就不知道了,看了下,REG_EXPAND_SZ 的值里面带有 %xx% 的,可以正常查到,如果没带 %xx%,纯文本,就会失败,具体为啥我也不清楚 https://github.com/xmake-io/xmake/blob/master/core/src/xmake/winos/registry_query.c |
我改了下 你再试试 |
https://docs.microsoft.com/en-us/windows/win32/api/winreg/nf-winreg-reggetvaluea xmake/core/src/xmake/winos/registry_query.c Lines 106 to 112 in cf4d917
我觉得这里应该是expand的时候失败了,失败之后再试一次
可能就好了 |
已经改了 |
现在可以了 |
描述讨论详情
目前在Windows下找注册表项只能是用"$(reg PATH;NAME)"的形式,能否在PATH或者NAME中加通配符("%.","**|d"这样的)?
使用场景:自定义find_package时需要找已安装的软件,然而这个软件在注册表中的形式是"XXX 18.x.x.x"这样的,导致无法使用完整路径匹配。在path中加通配符后发现find_path找不到目录了。
The text was updated successfully, but these errors were encountered: