我正在运行以下代码:
System.Management.ManagementClass wmiNetAdapterConfiguration = new System.Management.ManagementClass("Win32_NetworkAdapterConfiguration");
System.Management.ManagementObjectCollection wmiNetAdapters = wmiNetAdapterConfiguration.GetInstances();
Log.logInfo("Net adapters:" + wmiNetAdapters.get_Count());
在某些机器上它没问题,而在一些机器上我得到了以下错误:
System.Management.ManagementException:Not found
调用堆栈:
System.Management.ManagementException: Not found
at System.Management.ManagementException.ThrowWithExtendedInfo(ManagementStatus errorCode)
at System.Management.ManagementScope.InitializeGuts(Object o)
at System.Management.ManagementScope.Initialize()
at System.Management.ManagementObject.Initialize(Boolean getObject)
at System.Management.ManagementClass.GetInstances(EnumerationOptions options)
at System.Management.ManagementClass.GetInstances()
知道为什么吗?
答案 0 :(得分:11)
System.Management
namespace提供的功能取决于WMI (Windows Management Instrumentation)服务。
我怀疑WMI服务尚未在抛出该异常的系统上启动。
出于疑难解答的目的,您可以使用“管理工具”→“服务”实用程序进行验证。
如果情况确实如此,您可以将代码包装在try
- catch
块中,并使用ServiceController
class启动和停止相应的服务。
答案 1 :(得分:1)
我们刚刚遇到了同样的问题,并按照以下链接的帖子逐步进行,并且能够成功解决问题。
基本上,打开计算机管理并在左侧边栏中 请转到服务和应用程序下拉菜单并转到WMI 控制。然后查看右侧的栏并单击更多操作 然后是属性。如果你遇到与我相同的错误,你会的 在这看到它。我尝试过“从上次备份恢复”,然后就来了 有一些错误。然后我点击了“立即恢复”......我没有 备份,但我看到备份文件被称为'* .rec文件'。一世 去了Windows搜索并搜索* .rec,它找到了一个 C:\ Windows \ System32 \ wbem。它被称为corrupted.rec所以我没有 抱着很大的希望,似乎想出了同样的东西 消息和以前一样。所以我继续环顾四周,直到我 最终回到WMI控制,看到它不再 显示命名空间错误但我的系统规范。在我看到这个之后 打开了控制笔记本电脑和IT灯的软件 打开。我终于能够把我这该死的令人讨厌的笔记本电脑 关灯。在此之后,我为WMI做了一个备份,现在我将做一个 系统还原点。
答案 2 :(得分:0)
WMI服务正在为我运行,并且我正在使用管理员帐户。
当我使用rsconfig.exe运行命令时,我得到了完全相同的错误和堆栈跟踪,例如
cd C:\Program Files (x86)\Microsoft SQL Server\130\Tools\Binn\
rsconfig.exe -c -s sqlserver\instance -d dbName -a SQL -u user -p pass
我做错了是实例名称具有其自变量 -i ,并对此进行了修复:
rsconfig.exe -c -s sqlserver -i instance -d dbName -a SQL -u user -p pass
要检查预期的参数,请运行:
rsconfig.exe /?
更新:
这实际上是不正确的,如果您查看预期的参数,它指出服务器名称也必须包含实例名称,则不能使用引号,并且如果实例名称包含$符号,则可能需要对其进行转义,请参见此处以了解更多信息:https://stackoverflow.com/a/56370766/495455