我需要从c#.net应用程序启动第三方Java应用程序。最初我想从一个asp.net网站做到这一点,但遇到权限/特权问题后,我试图从一个Windows服务做到这一点,因为它作为系统用户运行,我希望这可以消除我的问题。哦,是的,当我试图在Windows 2008服务器上运行时遇到问题。在我的Windows 7开发环境中一切都很好。Windows Server 2008上的System.Diagnostics.Process.Start()问题
当然,我已经搜索这些论坛和其他人的答案,没有发现我已经找到了帮助,所以请招待我。
我有我想要在批处理文件中运行的命令,并使用下面的代码来启动它。
ProcessStartInfo psi = new ProcessStartInfo(filePathToBatchFile);
psi.Arguments = "arguments for batch file..."
psi.UseShellExecute = false;
psi.RedirectStandardOutput = true;
psi.RedirectStandardError = true;
psi.RedirectStandardInput = true;
Process p = Process.Start(psi);
我正在运行一个批处理文件,因为我想确保发生了什么事情。我确保所有的变量和文件路径都是正确的,批处理文件确实在运行。我可以把它做到像xcopy文件这样的其他东西,我可以从命令行自己运行命令,它工作正常。没有任何异常被抛出,并且没有输出。如果我改变了路径(到java二进制文件,我传递给它的文件等)故意不正确的路径,然后它抱怨。
我试过以不同的用户运行这个进程,也就是我可以用来登录到服务器并手动运行命令的那个用户。我已经从服务属性菜单中提供了对桌面的服务访问权限。
如果任何人有任何关于这里发生的事情的想法,甚至有一些关于如何诊断这个问题的提示,我将非常感激。
您能提供来自RedirectStandardOutput和RedirectStandardError的输出吗?如果没有关于发生的事情的一些事实,我们可以“永恒地招待”你。因为它是不正常的,所有这一切建议http://stackoverflow.com/questions/361097/c-service-cannot-execute-batch-file应导致正常执行。 – apros 2011-01-28 16:53:56
没有从RedirectStandardOutput或RedirectStandardError输出。 – rmsylvester 2011-01-31 14:44:44