Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/wcf/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何使用Process.Start()通过web服务在服务器端执行程序?_C#_Wcf - Fatal编程技术网

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

C# 如何使用Process.Start()通过web服务在服务器端执行程序?,c#,wcf,C#,Wcf,我在IIS中创建了wcf服务和主机。它内部有一个方法,通过从客户端调用来在服务器端执行程序。它似乎不起作用。调用该方法时不会发生任何事情 System.Diagnostics.Process.Start(@"C:\MtbKill.bat"); 上面是不起作用的代码。我还尝试了一些过程 Process[] process = Process.GetProcessesByName("Mtb"); foreach (var item in process) { try {

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

System.Diagnostics.Process.Start(@"C:\MtbKill.bat");
上面是不起作用的代码。我还尝试了一些过程

Process[] process = Process.GetProcessesByName("Mtb");
foreach (var item in process)
{
    try
    {
        item.Kill();
    }
    catch
    {
    }
}
它也不起作用。 我很困惑它与授权有关吗?因为我尝试过创建这样的文件夹,所以它没有任何问题


解决方案

我搜索了许多相关问题的来源。这是我发现的

要运行批处理文件,必须运行带有参数“/c”和文件名的“cmd.exe”

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

解决方案

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

这里有一个相关的问题链接,可以解决我的问题


感谢您的帮助。

以下是我启动流程的方式:

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);
    }
这就是我杀死进程的方式:

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);
    }

希望有帮助。

请查看。特别是,“它不工作”是什么意思?您的IIS应用程序的应用程序池的标识是否可以访问c:\?我不知道如何检查它。对不起,我是新手。我将尝试将路径移动到另一个驱动器。@user3386894请检查进程调用代码是否可以帮助您。谢谢米奇·邓肯。我发现这是识别访问的方法,或者您可以在
ProcessStartInfo
上使用
UseShellExecute