System.Diagnostics.Process无法启动进程

时间:2013-10-02 20:46:20

标签: c# windows windows-server-2003

我正在使用.net framework 4.0 Client Profile在VS2010上创建服务。目标计算机是Windows Server 2003 64位。此服务移动一些文件,然后使用System.Diagnostics.Process执行进程。麻烦的是,即使任务管理员将进程显示为启动,可执行文件也不会做什么。示例代码:

        private void imprimir(string nombreImpresora, int copias, string nombreArchivo)
    {
        try
        {
            string copiasSumatra = "1,";
            for (int i = 1; i < copias; i++)
            {
                copiasSumatra += "1,";
            }

            string path = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location);
            string comando = String.Format("-print-to \"{0}\" \"{1}\" -print-settings \"{2}odd,fit\" -silent", nombreImpresora, nombreArchivo, copiasSumatra);
            string filename = '"' + Path.Combine(path, "SumatraPDF.exe") + '"';
            System.Diagnostics.Process proc = new System.Diagnostics.Process();
            proc.StartInfo.WorkingDirectory = path;
            proc.StartInfo.FileName = filename;
            proc.StartInfo.Arguments = comando;
            proc.StartInfo.RedirectStandardError = false;
            proc.StartInfo.RedirectStandardOutput = false;
            proc.StartInfo.UseShellExecute = true;
            proc.StartInfo.ErrorDialog = false;
            proc.Start();
            proc.WaitForExit();
            lc.writeToLog("Instruction executed. Exit code: " + proc.ExitCode);
        }
        catch (Exception ex)
        {
            lc.writeToLog(ex.Message + " " + ex.StackTrace);
        }
    }

如果我在我的开发机器(Windows 8专业版)或其他测试服务器(Windows Server 2003 32位)上执行它,它会产生什么。如果我在WS2003 64位服务器上运行它,它什么都不做。

我已经调试了很多次,看它是否会产生一些我错过的错误,但没有任何反应。 “lc.writeToLog”方法将文本打印到文件。我用它来记录执行的每一行,但没有抛出任何错误。使用该方法我得出结论,它传递了“proc.WaitForExit()”指令,所以我认为它会按照我编程的方式进行,但没有任何反应。

我已经运行了相同的指令,但是传递了用户,密码和域名,结果是一样的。还尝试捕获标准错误和输出但它什么都没有。

可能是什么麻烦?

1 个答案:

答案 0 :(得分:0)

这是与服务器相关的问题。将应用程序部署到生产服务器后,问题已经消失。