如何使用Process.Start()通过Web服务在服务器端执行程序?

时间:2015-01-05 04:31:52

标签: c# wcf

我在IIS中创建了一个wcf服务和主机。它内部有一个通过从客户端调用在服务器端执行程序的方法。它似乎不起作用。调用该方法时没有任何反应。

System.Diagnostics.Process.Start(@"C:\MtbKill.bat");

以上是不起作用的代码。我也尝试了一些过程。

Process[] process = Process.GetProcessesByName("Mtb");
foreach (var item in process)
{
    try
    {
        item.Kill();
    }
    catch
    {
    }
}

它也不起作用。 我很困惑,它与授权有关吗?因为我已经尝试过这样创建文件夹,所以没有任何问题。

解决方案

我搜索了许多相关问题的来源。这是我发现的 Access is denied at System.Diagnostics.Process.StartWithCreateProcess(ProcessStartInfo startInfo)

3 个答案:

答案 0 :(得分:3)

要运行批处理文件,您必须运行" cmd.exe"参数" / c"和文件的名称。

System.Diagnostics.Process.Start(@"cmd.exe /c C:\MtbKill.bat");

答案 1 :(得分:0)

<强>解决方案

很抱歉编辑而不是发布答案

以下是解决我问题的相关问题链接。

Access is denied at System.Diagnostics.Process.StartWithCreateProcess(ProcessStartInfo startInfo)

感谢您的帮助。

答案 2 :(得分:0)

这是我开始一个过程的方式:

try{
 Process.Start("osk.exe", "/C");
} catch(exception ex)
{
WriteLog("Error: Onscreen keyboard could not start.", ex);
}

这就是我杀死进程的方式:

    try
    {
      Process[] processlist = Process.GetProcesses();
      foreach (Process theprocess in processlist)
      {
        if (theprocess.ProcessName == "osk")
        {
          theprocess.Kill();
        }
      }
    }
    catch (Exception ex)
    {
      WriteLog("Error: KillKeyBoardProcess", ex);
    }

希望它有所帮助。