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

NSIS脚本无法识别系统配置目录文件夹,卸载时无法删除MyApp

问题原因与解决方案

核心原因:文件系统重定向(File System Redirector)

你的NSIS卸载程序大概率是32位编译的。在64位Windows系统中,32位程序访问C:\Windows\System32时,会被系统自动重定向到C:\Windows\SysWOW64目录,而systemprofile是64位系统专属的系统配置文件夹,仅存在于真实的System32路径下,所以32位NSIS脚本无法定位到目标文件夹。

命令行能正常访问是因为你打开的是64位命令提示符(64位系统默认的cmd.exe为64位版本),不会触发重定向机制。

解决方案

通过NSIS的x64扩展组件临时禁用文件系统重定向,确保脚本能访问真实的System32目录:

  1. 在脚本头部引入x64扩展:
!include x64.nsh
  1. 在执行删除操作前,切换到64位视图并禁用重定向:
; 切换到64位注册表视图,避免路径解析偏差
SetRegView 64
; 临时禁用文件系统重定向
DisableX64FSRedirection

; 执行递归删除操作
RMDir /r "$SYSDIR\config\systemprofile\AppData\Roaming\MyApp"

; 恢复文件系统重定向(必须执行,避免影响后续逻辑)
EnableX64FSRedirection
SetRegView default

额外检查项

  • 确保卸载程序运行时,你的Windows服务已完全停止,避免文件夹内有文件被占用导致删除失败。
  • 若仍存在权限问题,可使用AccessControl.nsh扩展为当前进程赋予目标文件夹的删除权限,不过多数情况下解决重定向问题后即可完成删除。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.18 22:40:55