Batch file 批处理文件以在Win 7中注册.ocx

Batch file 批处理文件以在Win 7中注册.ocx,batch-file,Batch File,我需要发布一些非常旧的软件来使用Windows7(X86和X64)。我唯一的兼容性问题是注册4.ocx文件。我已经编写了以下批处理文件,以基于系统架构进行注册 @echo off setlocal enableextensions set REGSVR= if defined PROCESSOR_ARCHITEW6432 ( set REGSVR=%SystemRoot%\system32\regsvr32.exe ) else ( set REGSVR=%SystemR

我需要发布一些非常旧的软件来使用Windows7(X86和X64)。我唯一的兼容性问题是注册4.ocx文件。我已经编写了以下批处理文件,以基于系统架构进行注册

 @echo off
 setlocal enableextensions
 set REGSVR= 
 if defined PROCESSOR_ARCHITEW6432 (
 set REGSVR=%SystemRoot%\system32\regsvr32.exe
 ) else (
     set REGSVR=%SystemRoot%\SysWOW64\regsvr32.exe
 )
 if defined PROCESSOR_ARCHITEW6432 (
     %REGSVR% /s "C:\Windows\System32\mswinsck.ocx"
     %REGSVR% /s "C:\Windows\System32\Timgctrlv6.ocx"
     %REGSVR% /s "C:\Windows\System32\Graphic.ocx"
     %REGSVR% /s "C:\Windows\System32\mscomctl.ocx"
 ) else (
     %REGSVR% /s "c:\windows\sysWOW64\mswinsck.ocx"
     %REGSVR% /s "c:\windows\sysWOW64\Timgctrlv6.ocx"
     %REGSVR% /s "c:\windows\sysWOW64\Graphic.ocx"
     %REGSVR% /s "c:\windows\sysWOW64\mscomctl.ocx"
 )

通过以管理员身份运行批处理文件,这在64位Windows7中运行得非常好。但是,在我的32位Windows 7测试环境中,它要求我在运行批处理文件之前先禁用UAC,否则它没有任何影响(即使我右键单击并“以管理员身份运行”)。有没有人能解释一下这是怎么回事,或者可能是怎么做的,这样我就不必向客户规定“仅为Win 7 32位”禁用UAC了?

什么是
处理器架构W6432
?如果定义了程序文件(x86),那么测试
可能会更幸运。您还可能从脚本中受益。下一个环境变量可能与测试相关:
如果定义了ProgramFiles(x86)
和/或
如果定义了ProgramW6432
@rojo(处理器架构6432
是一个键入错误,IMHO)@rojo这是一个相当不错的解释:。我知道有很多方法可以检测比特,但我担心的是我的UAC似乎只需要关闭Win7 32位系统。有道理。我已关闭UAC,并且我的cmd提示符始终以管理员身份运行。(我没有从Linux+sudo中学到任何东西。):)regsvr32是否在失败时设置ERRORLEVEL?也许您可以尝试
%regsvr%/s ocxfile | |提示提升
。需要我详细解释一下吗?