我需要从c#.net应用程序启动第三方java应用程序。最初我想从一个asp.net网站上做这个,但是在遇到权限/权限问题之后我开始尝试从Windows服务中执行它,因为它以系统用户身份运行,我希望能解决我的问题。哦,是的,我试图在Windows 2008服务器上运行时出现问题。在我的Windows 7开发环境中,一切都很好。
当然,我已经搜索了这些论坛和其他人的答案,我发现没有任何帮助,所以请招待我。
我有一个命令,我想在批处理文件中运行,并使用以下代码启动它。
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 :(得分: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