internet-explorer - 基于处理器架构编辑/安装注册表文件 (.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"
解决方案
您似乎使用 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 进程:
推荐阅读
- javascript - 如何处理 30'000 个 url 的文件而不发生内存泄漏?
- kotlin - 等于两个对象开放类
- mysql - 从 mysqlc 获取的 json 生成报告
- python - pandas:groupby sum 以其他列为条件
- php - PHP 或 Laravel 中的 Amazon Transcribe 流媒体服务请求?
- git - 为什么 git pull autostash 需要变基?
- database - Prisma:所有迁移都已应用
- python - 在 Python 中制作浓度列表时遇到问题
- oracle - 如何在卡片模板中添加图像而不是图标 - Oracle Apex
- reactjs - ReactJS,Mobx:如何强制完成单个组件的类似刷新的重新加载?