C# 尝试删除共享时出现InvalidOperationException
我试图删除一个共享,但它一直在“InvokeMethod”行抛出InvalidOperationException。我是WMI新手,我不知道我的代码中是否缺少某些内容。。。你能帮我吗C# 尝试删除共享时出现InvalidOperationException,c#,.net,wmi,C#,.net,Wmi,我试图删除一个共享,但它一直在“InvokeMethod”行抛出InvalidOperationException。我是WMI新手,我不知道我的代码中是否缺少某些内容。。。你能帮我吗 ManagementScope ms = new ManagementScope(@"\\localhost\root\cimv2"); ManagementObjectSearcher searcher = new ManagementObjectSearcher( "Select *
ManagementScope ms = new ManagementScope(@"\\localhost\root\cimv2");
ManagementObjectSearcher searcher =
new ManagementObjectSearcher(
"Select * from Win32_Share where Name ='RanorexTests'");
ManagementObjectCollection result = searcher.Get();
((ManagementObject)result.GetEnumerator().Current).InvokeMethod(
"Delete", new object[] { });
编辑(完整堆栈跟踪):
在
System.Management.ManagementObjectCollection.ManagementObjectEnumerator.get_Current()
在中的RanorexTests.CalculatorUnitTest.deleteShare()处
C:\RanorexSolution\RanorexTests\RanorexTests\FlashCalculator\CalculatorUnitTest.cs:line
126
致以最良好的祝愿,
Mourasman枚举数以当前值为空开始。您必须先移动next() 发件人: C#语言的foreach语句(在Visual Basic中为每个语句)隐藏了枚举数的复杂性。因此,建议使用foreach,而不是直接操作枚举数 最初,枚举数位于集合中第一个元素之前。重置方法还将枚举数带回到该位置。在此位置,调用当前属性会引发异常。因此,在读取Current的值之前,必须调用MoveNext方法将枚举数前进到集合的第一个元素 我通常只是将我的放入foreach循环,即使我知道集合中只有一个项目:
foreach(ManagementObject obj in result)
obj.InvokeMethod("Delete", new object[] { });
张贴整个stacktrace。这将提供开始调试的信息。顺便说一句:这次失败的原因有很多。查看stacktrace将有助于缩小可能性。要获得完整的堆栈跟踪,请使用
exception.ToString()
谢谢您的回复!这是stacktrace:at System.Management.ManagementObjectCollection.ManagementObjectEnumerator.get_Current()at RanorexTests.CalculatorUnitTest.deleteShare(),位于C:\RanorexSolution\RanorexTests\RanorexTests\FlashCalculator\CalculatorUnitTest.cs:126行请使用此信息编辑文章,这将使每个人都更容易阅读。确认,修复了它!:)谢谢!