2013-02-06 99 views
2

我試圖從位於遠程計算機上的共享(即指向另一臺計算機)上的ASP.NET網站執行程序。下面是配置的樣子Win32_Process在遠程計算機上與目標共享創建

網站服務器=>計算機A(與分享指向)=>計算機B(EXE是這裏)

如果我通過了processName z中的下列參數:\工具\ bin \ myprogram.exe我得到一個找不到路徑的返回碼。如果我爲進程名稱\\ 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"]); 
    } 
+0

在那個目標機器上有一個'z:'驅動器..?還有什麼帳戶設置爲遠程機器上的用戶/密碼..你可以創建一個服務帳戶,你正在嘗試做什麼..? – MethodMan

+0

是的,它指向computerB。 – Dylan

回答

2

不要傳遞驅動器號,但使用完整的UNC路徑。

Z:驅動器是未知的,未映射給您通過「username」變量傳遞的用戶。 (你可能認爲它不是,但它不是)

相關問題