情况是:我必须使用ManagementBaseObject来运行批处理文件并获取其返回值(如果命令正确执行则为0,如果出错则为1)。我已经尝试使用“EXIT”命令来设置错误级别的代码,但无论我把它作为退出代码,“returnValue”属性始终为0.有没有办法让批处理文件影响该属性?登记/> 这里是代码(而不是调用批处理文件我只是执行一个简单的命令行,以便在这里发布更简单,但想法是相同的):
ManagementClass processClass = new ManagementClass("Win32_Process");
try
{
ManagementBaseObject inp = processClass.GetMethodParameters("Create");
inp["CommandLine"] = @"cmd /c exit /B 1";
ManagementBaseObject outp;
outp = processClass.InvokeMethod("Create", inp, null);
Console.WriteLine(outp["returnValue"]);
}
catch (Exception e)
{
Console.WriteLine(e.Message);
}
...但输出始终为0!我想看到的是1,这是我作为退出代码。是否可以这样做?
我知道我“可以”使用Process类使其工作,但使用ManagementBaseObject是我在远程计算机上运行批处理文件的唯一方法。
给出一点背景:
我有这个批处理文件位于远程计算机上,我必须从我的本地计算机运行该文件。我目前正在使用ManagementScope和ConnectionOptions类连接到提供我的凭据的远程计算机。之后,我创建了一个与远程连接关联的ManagementClass,ManagementPath设置为“Win32_Process”。然后,我使用ManagementBaseObject来运行批处理文件并获取其返回值
如果有人知道其他任何方式,请告诉我,我愿意接受建议
谢谢!