You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

TRegistry的GetKeyNames方法返回值异常问题求助

C++Builder中TRegistry::GetKeyNames获取子键名称异常问题

我尝试用以下代码读取注册表中的子键列表,TRegistry::GetKeyNames接收TStringList对象后,该对象的计数显示为3(正确数值),但无法获取到子键名称:

TRegistry *pRegistry = new TRegistry(KEY_READ);
pRegistry->RootKey   = HKEY_LOCAL_MACHINE;
pRegistry->OpenKeyReadOnly(L"\SOFTWARE\Ogre\Fasthole");

TStringList *subkeyNames = new TStringList();
pRegistry->GetKeyNames(subkeyNames);

UnicodeString ALICE  = subkeyNames->Names[0];

ALICE始终为NULL。


更新

原项目基于C++Builder 12.1 Athens开发,我新建项目并导入原有窗体升级到12.2后,问题仍存在。进一步测试发现:

TStringList *subkeys = new TStringList(); 
pRegistry->GetKeyNames(subkeys); 
UnicodeString RALPH = subkeys->Strings[0]; // <--- 失败 
UnicodeString ALICE = subkeys->Strings[1][1]; // <--- 同样失败 
wchar_t NORTON = subkeys->Strings[0][1]; // <--- 成功 
wchar_t TRIXIE = RALPH[1]; // <--- 也成功!!! 

直接获取UnicodeString值时均返回NULL,虽然单个字符可以通过临时方式读取,但这显然不符合预期。

内容的提问来源于stack exchange,提问作者Kevin

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.16 02:13:10