You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

将VCL应用迁移至Intraweb后如何启动wwwroot下的外部exe程序

IntraWeb中启动外部exe分两种常见场景,对应实现方式如下:


场景1:需要在IntraWeb服务端运行exe

如果你的需求是在部署IntraWeb服务的机器上运行exe,直接调用Win32API的ShellExecute即可,只需要调整路径获取逻辑,拿到wwwroot目录的正确路径:

  1. 先在单元引用中加入IWInit、Winapi.ShellAPI
  2. 示例代码:
var
  ExeFullPath: string;
begin
  // gSC.ContentPath 即为IntraWeb默认的wwwroot目录绝对路径
  ExeFullPath := IncludeTrailingPathDelimiter(gSC.ContentPath) + 'Application.exe';
  // 若不需要在服务端显示exe界面,可将SW_SHOW替换为SW_HIDE后台运行
  ShellExecute(0, 'OPEN', PChar(ExeFullPath), nil, nil, SW_SHOW);
end;

注意事项:

  • 若IntraWeb以Windows服务形态部署,需要给服务运行的账号配置对应exe的读取、执行权限
  • 若以ISAPI模块部署在IIS中,需要给对应应用池的运行身份配置exe的访问权限

场景2:需要让访问站点的客户端用户本地启动exe

IntraWeb作为Web框架,服务端代码没有权限直接操作客户端本地程序,这是浏览器的安全限制,可选实现方案如下:

  • 推荐方案:给目标exe注册自定义URL协议(比如myapp://),你可以提前给所有客户端设备导入注册表项完成协议注册,之后在IntraWeb页面上放一个指向myapp://启动参数的链接,用户点击后就会唤起本地的exe程序。
  • 兼容方案:如果是内网IE内核浏览器场景,可以将站点加入受信任列表后用ActiveX实现,但兼容性极差,不推荐使用。

注意:不要尝试用服务端的ShellExecute代码实现客户端启动效果,该操作只会在你的服务端机器上运行exe,用户侧看不到任何反应。

内容的提问来源于stack exchange,提问作者Amélie

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.25 20:45:06