如何设置 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: .
对我有用的:
- 右键单击 .EXE 文件所在的目录,然后 select 属性
- Select 安全选项卡
- 单击“编辑”按钮,然后单击“添加”按钮
- 单击“位置”按钮并确保您 select 您的计算机
- 输入 IIS AppPool
(例如:IIS AppPool\DefaultAppPool)
我有一个名为 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: .
对我有用的:
- 右键单击 .EXE 文件所在的目录,然后 select 属性
- Select 安全选项卡
- 单击“编辑”按钮,然后单击“添加”按钮
- 单击“位置”按钮并确保您 select 您的计算机
- 输入 IIS AppPool
(例如:IIS AppPool\DefaultAppPool)