我们遇到的问题如下。 我们有一个在IIS7下运行的ASP.NET WebService。 WebService中的代码工作100%,但是当WebService尝试运行.BAT文件时,什么都不会发生。 没有什么,代码不会崩溃,服务器不会警告我们任何事情,什么也不是。
我们已经尝试设置用户权限,我们试图运行BAT的不同方式,我们尝试玩registry, cmd.exe也有完整的权限。
我们现在非常难以做什么,任何帮助,将不胜感激。
(注意:旧的答案是正确的,sorting不正确。开箱即用,IIS不能执行cmd.exe实例,但它显然是可能的…)
您可以通过ASP.NET从IIS内运行batch file,但它需要您的模拟设置为100%。
为了这篇文章的目的,我将假定你处于一个非常安全的环境中,并且已经考虑了所有可能的攻击媒介,这些攻击媒介可以通过允许IIS执行batch file(在cmd的实例中。可执行程序。)
因此,Web进程需要以Administrator(GAH!)或另一个可以执行批处理的帐户运行。 我相信这将不可能与框中的ASPNET / IUSR_帐户。
激活模拟在这里MSDN上描述,并在法庭上给一天。
这应该作为运行Web服务的应用程序池标识用户来运行。 这是用户确保它具有足够的权限来执行和运行batch file。 这可能不是网站的匿名用户,除非您打开了模拟。 这是我的第一个猜测。
在ASP.NET调用代码中,您应该能够获得返回码或返回消息。 如果是这样,看看是否有任何进一步的线索。
突然间我有一个好主意! 在.BAT文件的代码中添加一些“Echo sometext >> log.txt”行,以便生成一些日志logging。 然后检查是否确实写入这个日志文件。 这可能是.BAT文件正在等待用户input的地方。 或者等待用户按下一个键closures控制台窗口。 由于这将是一个服务器,没有屏幕显示控制台,因此它永远等待用户按下服务器上的一个键。
您是否validation了cmd.exe的权限允许IIS执行它? 在我的系统上,默认的IIS帐户没有所需的权限。
听起来像这样被静默禁用可能是因为它似乎是一个stream行的恶意软件攻击载体。
你有解决这个问题的另一种方法吗?