Inno Setup安装器触发Rstrtmgr.dll访问违规问题求助
Inno Setup安装器调用Rstrtmgr.dll出现访问违规的解决方案
核心原因
Inno Setup从v5.0开始默认启用Restart Manager机制,用于处理安装时被占用的文件替换。即便关闭AlwaysRestart=yes,只要存在需要替换的锁定文件,安装器仍会调用Rstrtmgr.dll。你遇到的访问违规大概率是Restart Manager扫描进程/处理文件时的权限问题、系统dll损坏,或是旧版本Inno Setup的兼容性bug。
解决办法
- 完全禁用Restart Manager:在安装脚本的
[Setup]段添加参数:
此参数会强制安装器放弃使用Restart Manager,改用传统文件替换逻辑(若文件被占用,会直接提示用户重启系统完成安装),彻底避免调用UseRestartManager=noRstrtmgr.dll。 - 排查文件占用进程:若需保留Restart Manager功能,可通过Process Monitor工具监控安装过程,定位被占用的目标文件及对应进程,在安装前关闭相关进程,或调整安装逻辑避开文件占用场景。
- 升级Inno Setup版本:你使用的v5.6.1存在已知的Restart Manager兼容性问题,升级到v5.6.2及以上稳定版本(如v5.6.4),官方修复了多个相关bug,能有效降低此类异常概率。
- 确保管理员权限运行:Restart Manager需要足够权限扫描系统进程,可右键点击安装器选择“以管理员身份运行”,或在脚本
[Setup]段添加:
强制安装器以管理员权限启动,避免权限不足导致的访问违规。PrivilegesRequired=admin - 修复系统Rstrtmgr.dll:若系统中的
Rstrtmgr.dll损坏,可在管理员权限的命令提示符中执行:
让系统自动修复损坏的系统文件;也可从同版本正常系统中复制对应dll文件替换(注意32/64位版本匹配)。sfc /scannow
关于避免调用Rstrtmgr.dll
添加UseRestartManager=no是最直接的方式,该参数会完全禁用Restart Manager组件,安装过程中不会加载Rstrtmgr.dll,但代价是当文件被占用时无法自动处理,只能通过重启系统完成安装。
内容的提问来源于stack exchange,提问作者mark keli
相关产品推荐
相关产品推荐

