首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >RegistryKey.GetSubKeyNames抛出IOException

RegistryKey.GetSubKeyNames抛出IOException
EN

Stack Overflow用户
提问于 2011-04-18 16:41:48
回答 1查看 2.7K关注 0票数 4

使用RegistryKey.GetSubKeyNames时,会引发IOExeption:

“没有更多的数据可用”

以下是相关代码:

代码语言:javascript
复制
string subKey = @"SOFTWARE\Microsoft\Windows\CurrentVersion\Installer\UserData\S-1-5-18\Products";
RegistryKey key = Registry.LocalMachine.OpenSubKey( subKey );
string[] keys = key.GetSubKeyNames(); // throws IOException here

规范

  • Win7 x64
  • 对2010年SP1
  • .NET 3.5

当使用“任意CPU”的构建类型时,会引发异常;当使用构建类型"x86“时,代码将按预期执行,但将从"Wow6432Node”读取键,而不是上面定义的subKey字符串变量中指定的SubKey路径。

问题是:我如何读取64位系统(而不是Wow6432Node)上定义的subKey路径中的所有SubKeys?

注意:当我在另一个64位系统上运行相同的代码时,代码执行时不会出错。我几乎倾向于认为我可能在某个地方有一个损坏的注册表项?如果是的话,我对如何找到这把损坏的钥匙有什么想法?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-04-18 16:46:30

将适当的RegistryView传递给RegistryKey.OpenBaseKey()

例如:

代码语言:javascript
复制
RegistryKey tempRegKey = RegistryKey.OpenBaseKey(RegistryHive.LocalMachine, RegistryView.Registry64).OpenSubKey(@"SOFTWARE\Microsoft\Microsoft SQL Server");
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5706073

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档