9

我有一个批处理文件来执行一个 VB 脚本。虽然通过双击执行批处理文件将起作用,但是当我对 C# 执行相同操作时,它在我的本地环境中工作但不在临时服务器(Windows 服务器 2008r2)中,是否有任何权限级别我需要申请此执行. 从登台服务器我可以双击并执行批处理文件...

我已经使用管理员帐户登录到服务器,并以 localhost 身份浏览了应用程序。

从 C# 执行批处理文件时我有什么遗漏吗,

我认为我的 C# 代码没有任何问题,因为它在我的本地环境中运行良好,无论如何以下是我的 C# 代码,

if (File.Exists(FileName*))
            {
                System.Diagnostics.ProcessStartInfo p = new System.Diagnostics.ProcessStartInfo(FileName);
                System.Diagnostics.Process proc = new System.Diagnostics.Process();
                proc.StartInfo.FileName = FileName;
                proc.StartInfo.RedirectStandardError = true;
                proc.StartInfo.RedirectStandardOutput = true;
                proc.StartInfo.UseShellExecute = false;

                proc.Start();

                proc.WaitForExit();

            }
            else
            {
                lblMsg.Text = "Sorry unable to process you request";
            }

* FileName是批处理文件的路径。我还对包含批处理文件和 vbs 文件的文件夹设置了完全权限。

4

2 回答 2

4

为此,您的应用程序池需要以有权访问批处理文件的用户身份运行。检查如何更改IIS 7IIS 6的应用程序池标识。

于 2012-05-02T09:11:25.310 回答
2

扩展 Kartheek 所说的话:

  • 在 IIS 7 应用程序池中作为应用程序池帐户运行,IISAPPPOOL\AppPoolName
  • 在 IIS 6 应用程序池中运行为Network Service
  • 在任何一种情况下,这些帐户都没有任何访问用户文档文件夹的权限,并且(默认情况下)只能从公共数据存储中读取。

通常,您希望保留应用程序池帐户,因为它有助于隔离数据——所以我要做的就是确保您授予对应用程序池帐户所需的 bat 文件的读取+执行权限。您还需要对蝙蝠需要读取/写入的任何填充/文件夹具有适当的权限。

您无需更改应用程序中的任何内容来纠正此问题,除非您希望 IIS 应用程序伪装成实际坐在网站上的用户(只有在您使用某种形式的身份验证时它才真正有效。)通常这个无论如何都是一个坏主意——所以最好只调整权限。

作为一般经验法则,在 Web 服务器上工作时,您希望将权限/执行级别保持在尽可能低/限制性的水平。

于 2012-05-02T23:38:25.077 回答