.NET Framework 4.8中读取Win32_OperatingSystem属性时触发“Invalid namespace”异常的原因咨询
.NET Framework 4.8中读取Win32_OperatingSystem属性时触发“Invalid namespace”异常的原因咨询
嗨,我来帮你捋捋这个问题的核心原因~
你遇到的「Invalid namespace」异常,最直接的问题出在WMI命名空间的拼写错误上!看你的C#代码里写的是root\cmiv2,但Win32_OperatingSystem类所在的标准WMI命名空间应该是root\cimv2——这里你把「cim」的字母顺序搞反成「cmi」了,系统里根本不存在root\cmiv2这个命名空间,自然就抛出异常了。
不过也可以顺便排查下其他可能的小问题,做个全面验证:
- 确认平台目标:如果你的控制台程序是32位编译目标,在64位Windows系统上运行时,偶尔会出现WMI访问的兼容性问题,但结合你用PowerShell和wbemtest都能正常读取的情况,这个概率很低,核心还是拼写问题。
- 验证命名空间:你可以打开wbemtest,尝试连接
root\cmiv2,肯定会提示命名空间不存在,而连接root\cimv2就能正常访问,这也能佐证拼写错误的问题。
修正后的代码应该是这样的:
ManagementObjectSearcher mos = new(@"root\cimv2", @"select * from Win32_OperatingSystem"); ManagementObjectCollection moc = mos.Get();
把命名空间改成root\cimv2之后,你的代码应该就能像PowerShell那样正常读取Win32_OperatingSystem的属性了~
内容来源于stack exchange
相关产品推荐
相关产品推荐

