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

如何配置otvdm(winevdm)自动运行被调用的16位应用程序

64位Windows 10下自动调用otvdm运行16位程序适配Makefile的实现方法

方案一:全局注册otvdm为16位应用默认启动器(无需修改原有Makefile,一劳永逸)

这个方案最适配现有场景,配置完成后任何场景下调用16位exe都会自动走otvdm启动,全程无手动操作:

  • 把otvdm压缩包解压到固定的纯英文路径,不要带中文、空格、特殊字符,推荐路径比如C:\devtools\otvdm,避免后续调用出现路径识别错误。
  • 进入otvdm解压目录,找到install.bat文件,右键选择「以管理员身份运行」,脚本会自动写入注册表关联,把所有NE格式(16位)的可执行文件的默认处理程序绑定到otvdm。
  • 如果执行完脚本后调用16位程序仍然弹出「选择打开方式」的窗口,是因为系统里残留了之前错误的exe文件关联,管理员身份打开命令提示符依次执行以下命令重置关联,之后重启资源管理器或重启电脑,再重新运行一次install.bat即可:
assoc .exe=exefile
ftype exefile="%1" %*
reg delete "HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts\.exe" /f

配置完成后直接运行你的Makefile即可,里面调用的所有F盘分散存储的16位程序都会被系统自动交给otvdm拉起,不需要任何手动选择操作。

方案二:不修改系统全局关联,适配Makefile的轻量变通方案

如果你不想改动系统全局的文件关联,怕影响其他程序的正常运行,可以直接修改Makefile的调用逻辑,不需要做系统级配置:

  • 同样先把otvdm解压到固定的纯英文路径,比如C:\devtools\otvdm\otvdm.exe。
  • 在Makefile头部定义otvdm的路径变量,所有调用16位程序的命令前都加上这个变量前缀即可,示例写法:
# 配置otvdm路径,路径带空格的话要在外侧加双引号
OTVDM := C:/devtools/otvdm/otvdm.exe

# 原有构建逻辑,把直接调用16位exe的命令套上OTVDM变量
all: target.bin
target.bin: src.dat
    # 原命令为 F:/oldapps/pack16.exe src.dat target.bin
    $(OTVDM) F:/oldapps/pack16.exe src.dat target.bin
    $(OTVDM) F:/oldapps/link16.exe target.bin lib/oldlib.lib

如果Makefile里调用的16位程序数量极多,逐个修改命令太麻烦,可以写一个批量替换脚本,把所有匹配16位程序路径的行前面统一加上$(OTVDM) 前缀即可,配置完运行make的时候会自动给每个16位程序套上otvdm启动,也不会弹出手动选择的窗口。

注意事项

  • 路径兼容性问题:所有涉及的路径(otvdm路径、16位程序存储路径、Makefile工作路径)尽量不要使用中文、空格、特殊符号,otvdm对非标准路径的兼容性一般,容易出现文件找不到、启动失败的问题。
  • 依赖问题:如果启动16位程序时报缺少运行库dll,把对应16位版本的依赖dll放到目标exe的同目录下即可,otvdm会自动识别加载。
  • 版本选择:不要下载缺少组件的精简版otvdm,要选择带完整install.bat脚本的版本,否则全局关联会因为缺注册表项配置失败。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.28 20:48:19