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

如何以编程方式创建虚拟机,实现在Python中运行.exe应用并限定影响范围

实现方案

下面是三种可落地的实现路径,你可以根据自己的场景选择:

1. 第三方沙盒工具调用(实现成本最低)

核心思路是通过成熟的沙盒工具拦截exe的所有系统操作,将所有写入重定向到脚本所在目录的隔离空间:

  • 无需全局安装软件,可直接将Sandboxie Plus的便携版核心文件放在脚本目录下随项目分发
  • 调用示例代码:
import subprocess
import os

# 获取脚本所在目录
script_root = os.path.dirname(os.path.abspath(__file__))
# 沙盒工作目录,exe所有写入都会存在这里
isolate_dir = os.path.join(script_root, "sandbox_cache")
os.makedirs(isolate_dir, exist_ok=True)

# 启动目标exe
subprocess.run([
    os.path.join(script_root, "sandbox_core/Start.exe"),
    "/box:custom_isolate",
    f"/boxpath:{isolate_dir}",
    "你要运行的目标程序.exe"
], check=True)
  • 不需要保留运行数据时直接删除sandbox_cache文件夹即可,不会对系统产生任何残留修改。

2. Windows原生隔离接口实现(无第三方依赖)

如果不想引入额外工具,可直接通过Python的ctypes调用Windows原生的AppContainer API:

  • 自定义权限规则,仅给目标exe开放脚本所在目录的写入权限,其余系统路径、注册表全部设为只读或禁止访问
  • 完全基于系统原生接口,兼容性更强,适合需要分发的商用场景。

3. 轻量虚拟机隔离(最高安全等级)

如果目标exe存在驱动级操作,用户态沙盒无法拦截时可以选择轻量化虚拟机方案:

  • 打包精简版Windows PE镜像(最小可压缩到50M以内),配合QEMU便携版使用
  • Python调用QEMU启动时仅将脚本所在目录映射为虚拟机的唯一可写磁盘,exe所有运行修改只会落在该目录下,完全不会触及宿主系统。
补充说明
  • 如果需要额外限制exe的网络访问,可在上述方案的隔离规则中增加网络拦截配置
  • 测试时建议先拿无风险的exe验证路径重定向规则是否生效,避免出现漏写的情况。

内容的提问来源于stack exchange,提问作者user15430859

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 13:27:00