2011-01-28 87 views
2

我需要从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二进制文件,我传递给它的文件等)故意不正确的路径,然后它抱怨。

我试过以不同的用户运行这个进程,也就是我可以用来登录到服务器并手动运行命令的那个用户。我已经从服务属性菜单中提供了对桌面的服务访问权限。

如果任何人有任何关于这里发生的事情的想法,甚至有一些关于如何诊断这个问题的提示,我将非常感激。

+0

您能提供来自RedirectStandardOutput和RedirectStandardError的输出吗?如果没有关于发生的事情的一些事实,我们可以“永恒地招待”你。因为它是不正常的,所有这一切建议http://stackoverflow.com/questions/361097/c-service-cannot-execute-batch-file应导致正常执行。 – apros 2011-01-28 16:53:56

+0

没有从RedirectStandardOutput或RedirectStandardError输出。 – rmsylvester 2011-01-31 14:44:44

回答

1

您必须为您的应用程序创建清单或关闭UAC。

发生什么事是因为它不是一个签名的可执行文件,UAC阻止你的服务运行/启动其他应用程序。这就是清单的来源....在Windows SDK文档(Applicaiton Manifest)中查找它。

我以前也碰到了这样的问题,和最新最可气的是没有错误:http://msdn.microsoft.com/en-us/library/bb756929.aspx这里:http://technet.microsoft.com/en-us/library/xc3tc5xx(VS.80).aspx (better description)

教程上体现: http://msdn.microsoft.com/en-us/library/bb756973.aspx (Very Good)

Windows应用程序的权限和UAC(Vista的,7,2008/R2) http://msdn.microsoft.com/en-us/library/bb756996.aspx

相关问题