在 IIS 服务器上运行 bat 文件
Posted
技术标签:
【中文标题】在 IIS 服务器上运行 bat 文件【英文标题】:Running bat file on IIS server 【发布时间】:2012-09-07 11:58:52 【问题描述】:我正在尝试在带有 iis 版本 6.1 SP1 的 windows server 2008 R2 64bit 上运行 .bat 文件。 在我的本地机器上一切顺利,但在服务器上什么都没有发生,除了一个被创建的进程(cms.exe *32)。
根据我的搜索,主要问题是权限。出于安全原因,我在几个地方读到了 iis 默认阻止访问批处理文件。我确实理解这个问题,但在我的情况下不会有安全问题,所以我仍然想运行我的文件。
我发现的解决方案是通过实现模拟通过的,这意味着:
1- 更改 web.config -> 身份 impersonate="true"
2- 更改 iis 站点身份验证 -> 启用 ASP.NET 模拟
3- 授予文件和文件夹的权限
4- 甚至尝试了步骤 1 的不同版本 -> identity impersonate="true" userName=*** 密码=****
向 IIS 用户授予权限:
1-设置允许服务与 IIS Admin Service 上的桌面交互
要调用批处理,我在 c# 中使用以下代码:
private void startPervasive(string npu)
try
ProcessStartInfo startInfo = new ProcessStartInfo(ConfigurationManager.AppSettings.Get("PervasivePath"));
//startInfo.UseShellExecute = true;
//startInfo.WorkingDirectory = ConfigurationManager.AppSettings.Get("PervasiveWorkingPath");
//startInfo.WindowStyle = ProcessWindowStyle.Normal;
//startInfo.RedirectStandardInput = true;
//startInfo.RedirectStandardError = true;
//startInfo.RedirectStandardOutput = true;
////startInfo.FileName = ConfigurationManager.AppSettings.Get("PervasivePath");
startInfo.Arguments = npu;
Process myProcess = Process.Start(startInfo);
//StreamReader sr = File.OpenText(ConfigurationManager.AppSettings.Get("PervasivePath"));
//StreamWriter sw = myProcess.StandardInput;
//while (sr.Peek() != -1)
//
// string readed = sr.ReadLine();
// readed = readed.Replace("%1", npu);
// sw.WriteLine(readed + Environment.NewLine);
//
////myProcess.WaitForExit();
//myProcess.Close();
catch (Exception ex)
throw ex;
还应该注意的是,我尝试执行其他文件,包括 .exe 文件,但没有结果。
如果对所描述的步骤有任何建议、帮助和或更正,我们将不胜感激。
【问题讨论】:
您如何尝试从 IIS 执行批处理文件?如果你解释一下这可能会有所帮助。 我真的很抱歉我忘记了这一点:S 我添加了代码。 cmets 是我做过的尝试。 您通常可以使用事件查看器 - 安全日志视图来准确查看哪些内容未通过其权限检查。我怀疑的前两件事是用户没有“作为批处理作业登录”本地安全策略,或者没有执行 cmd.exe 本身的权限。 我已经检查了事件查看器,我没有关于此的警告或消息:S 就像它不存在事件一样 【参考方案1】:这可能不是您想要的,但可能会有所帮助。我建议您在服务器上创建一个计划任务来运行 BAT 文件,您可以设置用户权限,然后在您希望运行它时进行计划。
希望这会有所帮助。
【讨论】:
hm... 解决方案并不取决于我,但我们将使用计划来启动将调用批处理的 Web 服务。为什么我们需要网络服务?我们需要,因为我们想从数据库中检索一些数据。【参考方案2】:下面是另一个 *** 文章的链接,该文章似乎对同一问题有非常详细的回应。
IIS7 does not start my Exe file...
【讨论】:
感谢分享这个,但我自己做了这个。因为我认为这将是一个权限问题,所以我完全控制了应用程序池实体。我也对请求的文件夹(文件所在的文件夹)做了同样的事情。我仍然遇到同样的问题:S.以上是关于在 IIS 服务器上运行 bat 文件的主要内容,如果未能解决你的问题,请参考以下文章