リモート マシン上の共有 (別のマシンを指す) にある ASP.NET Web サイトからプログラムを実行しようとしています。構成は次のようになります
Web サイト サーバー => コンピューター A (参照先の共有) => コンピューター B (exe はここにあります)
processName z:\tools\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"]);
}