c# - 为什么我的 WMI InvokeMethod 调用返回 0(成功)但无法远程执行任何操作?

标签 c# wmi win32-process

我有一个非常简单的 WMI 方法,可以连接到远程服务器来启动批处理文件。

这次执行的返回码是0,告诉我它成功了。如果我更改批处理文件的路径,它会返回 9,所以我知道它正在查找命令文件。

问题是,当我查看服务器时,我发现什么也没有发生。该批处理文件所做的第一件事是从驱动器中删除 GIT 存储库。

我的代码是:

public object[] ProcessToRun;

    public void StartBuild()
    {
        ProcessToRun = BuildServerInfo.SelectedBranch == BuildServerBranch.Branch.Development ? new object[] { "c:\\src\\Build\\Batch1_Development.cmd" } : new object[] { "c:\\src\\Build\\Batch2_Release_Candidate.cmd" };
        var connection = new ConnectionOptions();

        connection.Impersonation = ImpersonationLevel.Impersonate;
        connection.Authentication = AuthenticationLevel.Packet;
        connection.EnablePrivileges = true;
        connection.Timeout = new TimeSpan(0,0,15);

        var mp = new ManagementPath("\\\\" + BuildServerInfo.BuildServer + "\\root" + "\\cimv2:Win32_LogicalDisk.DeviceID=\"C:\"");
        var ms = new ManagementScope(mp, connection);

        var mprocess = new ManagementClass(ms, new ManagementPath("Win32_Process"), new ObjectGetOptions());
        var results = mprocess.InvokeMethod("Create", ProcessToRun);
    }

这是代码的问题,还是我需要对我的服务器做些什么?服务器是Windows 2008 R2。

谢谢。

编辑:我的帐户具有完全管理员权限,并且 CIMV2\Security 下的 WMI 用户具有完全访问权限。

最佳答案

看来我需要设置工作目录才能执行。我创建了 inParams 并更改了我的 Invoke 以这样使用它们:

var inParams = mprocess.GetMethodParameters("Create");
        inParams["CommandLine"] = @"c:\src\Build\Batch1_Development.cmd";
        inParams["CurrentDirectory"] = @"c:\src\Build";

        var outParams = mprocess.InvokeMethod("Create", inParams, null);

关于c# - 为什么我的 WMI InvokeMethod 调用返回 0(成功)但无法远程执行任何操作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15981499/

相关文章:

c# - 检测 WPF 中的系统主题更改

c# - 在 .NET 中以编程方式检索断开连接的网络适配器信息

c++ - Win32/C++ 内存泄漏

C# 套接字接收 : Taking in data until buffer is full dilemma

C# 在 txt 文件的开头写入一个零宽度的不间断空格

c# - 项目重复问题

Python 不支持的操作数类型为 + :  'float'  and 'str

java - 使用 Jacob 从远程系统读取 Windows 注册表信息

windows - WaitForSingleObject 是否放弃线程的时间片?

windows - 我是如何在我的应用程序中获得这个隐藏的 "URL Moniker Notification Window"的?