从C#权限问题执行批处理文件

时间:2012-05-02 08:51:50

标签: c# asp.net vbscript batch-file windows-server-2008-r2

我有一个批处理文件来执行VB脚本。虽然通过双击执行批处理文件将起作用,但是当我使用C#完成相同的操作时,它在本地环境中工作但不在登台服务器(Windows Server 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文件的文件夹设置了完全权限。

2 个答案:

答案 0 :(得分:3)

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

答案 1 :(得分:2)

扩展Kartheek的说法:

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

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

您不需要更改应用中的任何内容来解决此问题,除非您希望IIS应用程序伪装成实际位于网站的用户(只有在您使用某种形式的身份验证时才能正常工作)。 )无论如何,这通常是一个坏主意 - 所以最好只调整权限。

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

相关问题