诗木 发表于 2026-8-3 19:13:12

枚举注册表子项

发现火山没有,可以新增一个以备不时之需。
<火山程序 类型 = "通常" 版本 = 1 />

方法 枚举注册表子项 <公开 静态 类型 = 整数 注释 = "枚举注册表指定路径下的所有子项名称,返回子项数量" 返回值注释 = "子项数量">
参数 根目录 <类型 = 注册表根目录类型>
参数 表项路径 <类型 = 文本型 注释 = "提供表项所处的注册表路径文本,路径分隔符为\'\\\\\'字符.">
参数 子项名称数组 <类型 = 文本数组类 注释 = "接收子项名称">
{
    变量 子项数量 <类型 = 整数 值 = 0>
    @ HKEY hKey = NULL;
    @ if (::RegOpenKeyExW((HKEY)(UINT_P)@<根目录>, @<表项路径>.GetText(), 0, KEY_READ, &hKey) == ERROR_SUCCESS)
    @ {
    @   DWORD dwIndex = 0;
    @   WCHAR szName;
    @   DWORD dwNameLen = 256;
    @   while (::RegEnumKeyExW(hKey, dwIndex, szName, &dwNameLen, NULL, NULL, NULL, NULL) == ERROR_SUCCESS)
    @   {
    @         @<子项名称数组>.data().Add4(1, szName);
    @         dwIndex++;
    @         dwNameLen = 256;
    @   }
    @   ::RegCloseKey(hKey);
    @   @<子项数量> = (INT_P)@<子项名称数组>.data().GetCount();
    @ }
    返回 (子项数量)
}

山梦 发表于 2026-8-4 09:11:07

:):):):):):):):):)
页: [1]
查看完整版本: 枚举注册表子项