如何设置 IIS users/permissions 以在 Web 应用程序中执行 Process.start()?

How to set IIS users/permissions to execute a Process.start() in the web application?

我有一个名为 Script1 的 powershell 脚本文件。ps1 我使用以下代码从 ASP.NET 中的 Web 应用程序执行它:

 process.StartInfo.FileName = @"C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe";
 process.StartInfo.Arguments = $"-File \"{ScriptNameOne}\" \"{param1}\"  \"{param2}\" \"{param3}\"";
 process.StartInfo.UseShellExecute = true;
 process.Start();

问题是当我在 IIS 中部署我的 Web 应用程序时,进程没有启动。
我没有收到任何错误,只是我的 powershell 没有 运行.

代码在来自 visual Studio 的 IIS Express 中运行良好,因为计算机中的用户正在执行所有进程,所以我对计算机中的每个源都有权限。

重要提示:我需要在站点所在的服务器中本地执行此 powershell 脚本。

我知道这是 user/permissions 问题,所以... 在 IIS 中,我需要哪些权限? 我应该使用哪些 IIS 用户? 我需要在 powershell.exe 所在的文件夹中授予权限吗?

ASP.NET 网页和服务器控制代码在 Web 服务器上的 ASP.NET 工作进程的上下文中执行。如果在 ASP.NET 网页或服务器控件中使用 Start 方法,新进程将在具有受限权限的 Web 服务器上执行。该进程未在与客户端浏览器相同的上下文中启动,并且无权访问用户桌面。

  • 为 ASP.NET 工作进程帐户授予权限 与桌面交互或允许 ASP.NET 工作进程在 SYSTEM 帐户中 运行。

要了解如何在 SYSTEM 帐户中允许工作进程 运行 并了解 ASPNET 帐户的默认权限,请查看这篇文章信息:ASP.NET 中的进程和请求身份:http://support.microsoft.com/default.aspx?scid=kb;en-us;317012

  • 启用 IIS 管理服务与桌面交互 要配置它,请按照以下步骤操作。

一个。打开控制面板并执行以下步骤: 对于 Windows NT:单击服务。对于 Windows 2000、Windows XP 和 .NET Server:单击“管理工具”,然后单击“服务”。

b。双击 IIS 管理服务。

c。在登录选项卡上,select 允许服务与桌面交互复选框。记得将 运行 IIS Admin Service 作为本地系统。 d.停止并重新启动 IIS 管理服务。

关于这个问题的更多信息你可以参考这个link: .

对我有用的:

  1. 右键单击 .EXE 文件所在的目录,然后 select 属性
  2. Select 安全选项卡
  3. 单击“编辑”按钮,然后单击“添加”按钮
  4. 单击“位置”按钮并确保您 select 您的计算机
  5. 输入 IIS AppPool(例如:IIS AppPool\DefaultAppPool)

https://support.pkware.com/home/smar/latest/sem-knowledge-base/kb-granting-folder-permissions-to-iis-application-pools