Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/powerbi/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Internet explorer 基于处理器体系结构编辑/安装注册表文件(.reg)_Internet Explorer_Registry_X86 64_Registrykey - Fatal编程技术网

Internet explorer 基于处理器体系结构编辑/安装注册表文件(.reg)

Internet explorer 基于处理器体系结构编辑/安装注册表文件(.reg),internet-explorer,registry,x86-64,registrykey,Internet Explorer,Registry,X86 64,Registrykey,我创建了一个注册表文件,该文件安装了URL警报协议的一个键,这样当用户在任何浏览器中单击我们的web应用程序中的某个相关链接时,该链接将在Internet Explorer中打开。 这很有效。 问题是,客户要求在32位下安装IE的注册表项。意味着,无论用户的处理器架构是什么(x86、x64),注册表必须安装为使用32位下的IE。现在我无法设置用于设置程序文件路径(32位)或程序文件路径(x86)(64位)的条件变量 下面是注册表项条目: [HKEY_CLASSES_ROOT\IEFrmOB]

我创建了一个注册表文件,该文件安装了URL警报协议的一个键,这样当用户在任何浏览器中单击我们的web应用程序中的某个相关链接时,该链接将在Internet Explorer中打开。 这很有效。
问题是,客户要求在32位下安装IE的注册表项。意味着,无论用户的处理器架构是什么(x86、x64),注册表必须安装为使用32位下的IE。现在我无法设置用于设置程序文件路径(32位)或程序文件路径(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命令中添加架构判断命令,如下所示:

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

@="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可以用两个进程(32位和64位)同时启动。 如果上述方法不起作用,您可以检查IE设置以修改IE流程:

@="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"