自解压可执行文件无法识别System32中的UWFMGR命令求助
问题原因与解决办法
核心原因
你的自解压程序大概率是32位版本,它启动的CMD窗口属于32位进程。Windows为兼容32位程序会开启文件系统重定向:32位进程访问C:\Windows\System32时,会被自动重定向到C:\Windows\SysWOW64(32位系统文件目录),而uwfmgr.exe是64位专属工具,仅存在于真正的64位System32目录中,因此32位CMD里找不到该文件——哪怕写全路径也没用,因为路径会被重定向篡改。
直接运行脚本时,你用的是64位CMD(64位系统默认打开的CMD为64位),不会触发重定向,所以能正常执行。
解决方案
有三种可行的解决方式:
在脚本里指定64位uwfmgr的真实路径
把脚本里的uwfmgr替换为C:\Windows\Sysnative\uwfmgr.exe,Sysnative是Windows提供的特殊别名,32位进程通过它可绕过重定向,直接访问64位的System32目录。同时注意修正FOR /F的语法错误(原代码用双引号包裹DIR命令会被当成文件名,需改用反引号):SETLOCAL EnableDelayedExpansion FOR /F usebackq "tokens=*" %%F IN (`DIR /S /B /A-D`) DO ( C:\Windows\Sysnative\uwfmgr.exe file commit "%%F" )让自解压程序启动64位CMD
修改自解压程序的配置,将启动命令从直接运行SETUP.bat改为:C:\Windows\Sysnative\cmd.exe /c SETUP.bat这样自解压程序会调用64位CMD执行脚本,自然能正常找到
uwfmgr.exe。改用64位自解压工具
如果你的自解压工具支持生成64位自解压包,直接生成64位版本,它启动的CMD就是64位的,不会触发文件系统重定向问题。
内容的提问来源于stack exchange,提问作者JuanASIR
相关产品推荐
相关产品推荐

