c# - Windows Server 2008 上的 System.Diagnostics.Process.Start() 问题

标签 c# asp.net windows-server-2008

我需要从 c# .net 应用程序启动第 3 方 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 二进制文件、我传递给它的文件等)更改为故意不正确的路径,它就会提示。

我已经尝试以不同的用户身份运行这个过程,即我可以用来登录服务器并手动运行命令的用户。我已从服务属性菜单中授予服务对桌面的访问权限。

如果有人对这里发生的事情有任何想法,或者甚至对我如何诊断这个问题有一些提示,我们将不胜感激。

最佳答案

您必须为您的应用创建 list 或关闭 UAC。

发生的事情是,由于它不是签名的可执行文件,UAC 阻止您的服务运行/启动其他应用程序。这就是 list 的来源……在 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)

list 教程: 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

关于c# - Windows Server 2008 上的 System.Diagnostics.Process.Start() 问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4830055/

相关文章:

c# - 如何从一台机器的所有用户那里获取我的文档文件夹路径

c# - 将业务规则放入存储库中

c# - 相当于Visual Studio的 "Properties Window"的控件?

c# - 如何从内容页检索母版页中的控件

c# - 为什么我的子控件在事件附加时未初始化?

c# - 从子用户控件访问父用户控件中的对象

html - CSS Div 相互重叠

c++ - 在随机访问网络服务器上的文件后顺序访问文件时的性能

asp.net - MSDeploy.exe 可以以管理员身份连接,但不能以任何其他 Windows 帐户身份连接

php - 在 Apache/Windows 2008 上使用 PHP 和 Oracle 时身份验证登录页面无法正常工作