C#WMI远程程序不';执行不正确

C#WMI远程程序不';执行不正确,c#,wmi,C#,Wmi,我正在尝试使用WMI在远程服务器上执行程序 当我执行代码时,我可以看到可执行文件出现在远程服务器上任务管理器的“进程”选项卡中,但它从未实际执行其功能。当它正确运行时,特定文件夹中应该有一些文件,但当我从程序中运行它时,没有文件 另外,我检查了从WMI返回的结果,得到一个代码0,我认为这表明没有错误 我已经把代码贴在下面了。如果我的代码中没有明显的错误,那么我将非常感谢关于如何解决这个问题的建议,因为我是WMI流程的新手 using System; using System.Collection

我正在尝试使用WMI在远程服务器上执行程序

当我执行代码时,我可以看到可执行文件出现在远程服务器上任务管理器的“进程”选项卡中,但它从未实际执行其功能。当它正确运行时,特定文件夹中应该有一些文件,但当我从程序中运行它时,没有文件

另外,我检查了从WMI返回的结果,得到一个代码0,我认为这表明没有错误

我已经把代码贴在下面了。如果我的代码中没有明显的错误,那么我将非常感谢关于如何解决这个问题的建议,因为我是WMI流程的新手

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Runtime.InteropServices;
using System.ComponentModel;
using System.IO;
using System.Configuration;
using System.Diagnostics;
using System.Management;

namespace ExecuteNetworkResources
{
    class Program
    {
        static void Main(string[] args)
        {
            var processToRun = new[] { "C:\\Program Files\\TestApplication\\mscombine.exe -c -cwa" };
            var connection = new ConnectionOptions();
            connection.Username = "domain\\user1;
            connection.Password = "password";
            var wmiScope = new ManagementScope(String.Format(@"\\{0}\root\cimv2", "Server1"), connection);
            var wmiProcess = new ManagementClass(wmiScope, new ManagementPath("Win32_Process"), new ObjectGetOptions());
            object result = wmiProcess.InvokeMethod("Create", processToRun);
            Console.WriteLine("Returned: " + result);
            Console.ReadLine();

        }
    }
}

您可以在远程计算机的任务管理器中看到进程,这意味着WMI执行成功。现在没有创建文件的问题是因为远程进程创建方法在会话0中运行进程。这是一个非交互式桌面会话

这可能会限制进程访问文件系统的权限。这就是为什么您没有收到任何错误,但过程中的操作被忽略的原因。您需要在连接选项中明确指定它以启用previleges:

        ConnectionOptions connection = new ConnectionOptions() {
            EnablePrivileges = true
        };

如果用于连接的用户有足够的权限,这将允许访问文件系统。

我回答这个问题,以便将其标记为MethodMan的答案。他是对的,我们的服务器团队说它已经关闭了

远程服务器是否启用了
WMI
您可以进行远程调试吗。。?如果没有,则重构代码以添加一些日志记录和一些错误捕获。。实现几行代码应该不会花那么长时间。。另外,请与远程服务器管理员联系,看看他们是否启用了WMI,这可能是您的本地计算机之外的权限问题。我将很快尝试此操作并提供反馈。WMI已关闭,但我将对此进行投票,因为我的代码中没有此项,这与建立良好的连接相关。我不明白如果WMI关闭,我如何连接和查看应用程序。您提到它正在远程计算机上调用进程,所以我假设这是工作代码的示例片段。我发现这里缺少的另一个东西是“wmiScope.Connect();”方法调用。