Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 尝试删除共享时出现InvalidOperationException_C#_.net_Wmi - Fatal编程技术网

C# 尝试删除共享时出现InvalidOperationException

C# 尝试删除共享时出现InvalidOperationException,c#,.net,wmi,C#,.net,Wmi,我试图删除一个共享,但它一直在“InvokeMethod”行抛出InvalidOperationException。我是WMI新手,我不知道我的代码中是否缺少某些内容。。。你能帮我吗 ManagementScope ms = new ManagementScope(@"\\localhost\root\cimv2"); ManagementObjectSearcher searcher = new ManagementObjectSearcher( "Select *

我试图删除一个共享,但它一直在“InvokeMethod”行抛出InvalidOperationException。我是WMI新手,我不知道我的代码中是否缺少某些内容。。。你能帮我吗

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行请使用此信息编辑文章,这将使每个人都更容易阅读。确认,修复了它!:)谢谢!