首页 > 解决方案 > 基于处理器架构编辑/安装注册表文件 (.reg)

问题描述

我创建了一个注册表文件,它安装了URL Alert Protocol的密钥,因此当用户在任何浏览器中单击我们的 Web 应用程序中的某个相关链接时,该链接将在Internet Explorer中打开。这工作得很好。
问题是,客户要求在 32 位下安装 IE 的注册表项。也就是说,无论用户的处理器架构是什么(x86、x64),都必须安装注册表才能使用 32 位下的 IE。现在我无法为此目的设置为Program Files(32 位)或Program Files (x86)(64 位)设置路径的条件变量。有什么帮助吗? 下面是注册表项:


[HKEY_CLASSES_ROOT\IEFrmOB]
@="\"URL:Alert Protocol\""
"URL Protocol"="\"\""

[HKEY_CLASSES_ROOT\IEFrmOB\DefaultIcon]
@="\"iexplore.exe,1\""

[HKEY_CLASSES_ROOT\IEFrmOB\shell]

[HKEY_CLASSES_ROOT\IEFrmOB\shell\open]

[HKEY_CLASSES_ROOT\IEFrmOB\shell\open\command]
@="cmd /v /k set \"myvar=%1\" & set myvar=!myvar:IEFrmOB:=! & start \"\" /B \"!ProgramFiles!\\Internet Explorer\\iexplore.exe\" !myvar! & exit"


标签: internet-explorerregistryx86-64registrykey

解决方案


您似乎使用 cmd 从以下代码启动 IE 进程:

"!ProgramFiles!\\Internet Explorer\\iexplore.exe

如果我们用bat命令启动32位IE,建议在cmd命令中加入架构判断命令,如下: 在此处输入图像描述

set myvar="123"
set IEfolder=""
IF "%PROCESSOR_ARCHITECTURE%"=="x86" (set IEfolder="%PROGRAMFILES%") else (set 
IEfolder="%PROGRAMFILES(X86)%") 
set IEfolder=%IEfolder:~1,-1%\Internet Explorer
echo %IEfolder%
start "%IEfolder%" iexplore.exe www.bing.com

您可以将上述判断代码添加到注册表中并进行测试。代码如下:

@="cmd /v /k set \"myvar=%1\" & set myvar=!myvar:IEFrmOB:=! & IF "%PROCESSOR_ARCHITECTURE%"=="x86" (set IEfolder="PROGRAMFILES") else (set IEfolder="PROGRAMFILES(X86)") &start \"\" /B \"%IEfolder%\\Internet Explorer\\iexplore.exe\" !myvar! & exit"

但是我不确定当我们调用 x86 IE 时,如果您的操作系统是 64 位,Windows 操作系统只会启动 32 位 IE。因为 IE11 可以同时启动 2 个进程(32 位和 64 位)。如果上述方法不起作用,您可以检查 IE 设置来修改 IE 进程:

https://social.technet.microsoft.com/Forums/en-US/8b34d705-ba27-4359-a34b-e1ff766878ea/force-ie-11-to-open-in-32-bit-mode?forum=win10itprogeneral


推荐阅读