C# Win32_进程在远程计算机上创建,目标在共享上

C# Win32_进程在远程计算机上创建,目标在共享上,c#,wmi,C#,Wmi,我正在尝试从位于远程计算机共享(指向另一台计算机)上的ASP.NET网站执行程序。下面是配置的样子 网站服务器=>计算机A(带有指向的共享)=>计算机B(exe在此) 如果我为processName z传递以下参数:\tools\bin\myprogram.exe,我会得到一个返回码path not found。如果我为进程名\\computerB\tools\bin\myprogram.exe传递以下参数,则会出现访问被拒绝错误 private static int CreateRemoteP

我正在尝试从位于远程计算机共享(指向另一台计算机)上的ASP.NET网站执行程序。下面是配置的样子

网站服务器=>计算机A(带有指向的共享)=>计算机B(exe在此)

如果我为processName z传递以下参数:\tools\bin\myprogram.exe,我会得到一个返回码path not found。如果我为进程名\\computerB\tools\bin\myprogram.exe传递以下参数,则会出现访问被拒绝错误

private static int CreateRemoteProcess(string serverName, string username, string password, string processName, params string[] arguments)
{
    var connection = new ConnectionOptions
    {
        Username = username,
        Password = password
    };

    var scope = new ManagementScope(@"\\" + serverName + @"\root\cimv2", connection);
    using (var managementClass = new ManagementClass(scope,
                                                    new ManagementPath("Win32_Process"),
                                                    new ObjectGetOptions()))
    {
        var inputParams = managementClass.GetMethodParameters("Create");
        if (arguments != null)
        {
            foreach (var param in arguments)
            {
                processName += " " + param;
            }
        }

        inputParams["CommandLine"] = processName;
        var outParams = managementClass.InvokeMethod("Create",
                                                     inputParams,
                                                     new InvokeMethodOptions());
        outParams = managementClass.InvokeMethod("Create", inputParams, null);
        var ret = Convert.ToInt32(outParams["ReturnValue"]);
        return Convert.ToInt32(outParams["ProcessId"]);
    }

不要传递驱动器号,而是使用完整的UNC路径


Z:驱动器未知,并且没有为您使用“username”变量传递的用户映射。(您可能认为是,但不是)

目标机器上是否有
z:
驱动器。。?另外,为远程计算机上的用户/密码设置了什么帐户。。你能为你要做的事情创建一个服务帐户吗?是的,它指向computerB。