就这点东西,用控制台或者其他WinForm程序都能用,但是搬到我的项目里就不管用了,哪位大佬知道啥情况?

解决方案 »

  1.   

    cmd.startInfo.fileName你這裡能執行嗎,,還有你的oracle的服務名是一樣的嗎
      

  2.   

    这个是可以执行的,orcle里面的exp.exe文件。在别的winform或者控制台都可以执行!
      

  3.   

    是的  这个在cmd里是可以直接运行成功的!
      

  4.   

    直接把你的exp命令写到dat里面 程序执行dat文件 简单多了
      

  5.   

    你试下这个函数/// <summary>
            /// 运行cmd命令
            /// </summary>
            /// <param name="dosCommand">cmd 命令行</param>
            /// <param name="milliseconds">0</param>
            /// <returns></returns>
            public static string RunCommand(string dosCommand, int milliseconds)
            {
                string output = "";     //输出字符串
                if (dosCommand != null && dosCommand != "")
                {
                    Process process = new Process();             //创建进程对象
                    ProcessStartInfo startInfo = new ProcessStartInfo();
                    startInfo.FileName = "cmd.exe";              //设定需要执行的命令
                    startInfo.Arguments = "/C " + dosCommand;    //设定参数,其中的“/C”表示执行完命令后马上退出
                    startInfo.UseShellExecute = false;           //不使用系统外壳程序启动
                    startInfo.RedirectStandardInput = false;     //不重定向输入
                    startInfo.RedirectStandardOutput = true;   //重定向输出
                    startInfo.RedirectStandardError = true;
                    startInfo.CreateNoWindow = true;     //不创建窗口
                    process.StartInfo = startInfo;
                    try
                    {
                        if (process.Start())       //开始进程
                        {
                            if (milliseconds == 0)
                                process.WaitForExit();     //这里无限等待进程结束
                            else
                                process.WaitForExit(milliseconds);  //当超过这个毫秒后,不管执行结果如何,都不再执行这个DOS命令
                            output = process.StandardOutput.ReadToEnd();//读取进程的输出
                            if (output == "")  //运行失败返回失败原因
                                output = process.StandardError.ReadToEnd();
                        }
                    }
                    catch
                    {
                    }
                    finally
                    {
                        if (process != null)
                            process.Close();
                    }
                }
                return output;
            }