如何在Windows IIS服务器上通过网页按钮远程运行.exe程序
实现IIS网页触发服务器端可执行文件运行
核心思路
通过IIS托管的ASP.NET页面,调用服务器端的进程启动API,点击网页按钮时向服务器发送请求,触发对应程序在服务器本地执行(你需求中的"远程运行"本质是前端触发服务器本地程序)。
具体实现步骤
1. 调整IIS应用程序池权限
- 找到站点对应的应用程序池,右键进入【高级设置】
- 将【标识】改为具有足够权限的账户(比如本地管理员,或专门创建的、有权限访问
C:\exe目录并执行program.exe的账户) - 说明:默认的
IIS AppPool\XXX账户权限有限,大概率无法启动外部程序,必须调整
2. 编写服务器端代码(以ASP.NET Web Forms为例)
创建.aspx页面,添加按钮和后台逻辑:
前端按钮代码(HTML部分)
<asp:Button ID="BtnRun1" runat="server" Text="运行参数组合1" OnClick="BtnRun1_Click" /> <asp:Button ID="BtnRun2" runat="server" Text="运行参数组合2" OnClick="BtnRun2_Click" />
后台C#代码
using System.Diagnostics; protected void BtnRun1_Click(object sender, EventArgs e) { LaunchExe(@"C:\exe\program.exe", "arg1 arg2"); } protected void BtnRun2_Click(object sender, EventArgs e) { LaunchExe(@"C:\exe\program.exe", "arg1 arg3"); } private void LaunchExe(string exePath, string arguments) { ProcessStartInfo startInfo = new ProcessStartInfo(); startInfo.FileName = exePath; startInfo.Arguments = arguments; // 隐藏程序窗口(按需设置) startInfo.WindowStyle = ProcessWindowStyle.Hidden; startInfo.UseShellExecute = false; startInfo.CreateNoWindow = true; try { Process.Start(startInfo); Response.Write("程序已启动"); } catch (Exception ex) { Response.Write($"启动失败:{ex.Message}"); } }
3. 补充文件系统权限
- 给
C:\exe目录添加应用程序池标识(或你设置的账户)的读取和执行权限 - 如果程序需要写入日志或访问其他资源,给对应目录添加写入权限
4. 测试验证
- 将页面发布到IIS站点
- 访问网页点击按钮,通过服务器任务管理器的进程列表确认
program.exe是否启动
额外提醒
- 内网环境也建议限制网页访问范围(比如IIS IP白名单、Windows身份验证),避免误操作
- 若程序有输出需求,可在
ProcessStartInfo中配置输出重定向到日志文件,方便排查问题
内容的提问来源于stack exchange,提问作者G.I. Jew
相关产品推荐
相关产品推荐

