来来来,瞧一瞧,看一看:记尝试解决一个问题。
最近收到一个外部 bug:[系统 / 打开 / 网站] 组件 期望打开 ie,但打开的是搜狗浏览器。帖子链接如下 【请教】网站组件使用为什么打开的是搜狗或者 360 浏览器
先说结论:
- 我没有从代码层面解决问题!但如果有人可以解决,请告诉我··· print(“Thanks”)
- 远离国产流氓,人人有责; 要用流氓来对抗流氓;(牛战士也不行!)
- VMWare WorkStation 是个好软件,虚拟机是个伟大的发明
show you the code
import subprocess
def run_app(path=None, work_path=None):
try:
proc = subprocess.Popen(path, cwd=work_path) # 关键代码
except Exception as e:
raise e
def open_url(ie_path="C:/Program Files (x86)/Internet Explorer/iexplore.exe", url=""):
try:
path = ie_path + " " + url
result = run_app(path, work_path=None)
return result
except Exception as e:
raise e
open_url(ie_path="C:/Program Files (x86)/Internet Explorer/iexplore.exe", url="https://www.baidu.com") # 客户是这样写的
###
ie_path = r"C:/Program Files (x86)/Internet Explorer/iexplore.exe"
all_path = r"C:/Program Files (x86)/Internet Explorer/iexplore.exe https://baidu.com.cn"
cmd_path = r'"C:/Program Files (x86)/Internet Explorer/iexplore.exe" https://baidu.com.cn'
subprocess.Popen(all_path)
###
第一阶段 干净的机器(只有 ie, 未安装各种软件···)
- 打开注册表,找到下图所示的项
可以看到 http/shell/open/command 项右侧 (默认) 值是 iexplore.exe, 此时 你可以自由修改其值。 (DelegateExecute) 值是一串 GUID, 此时你也可以自由修改。
第二阶段 下载安装搜狗浏览器, 去掉【设为默认浏览器】选项
安装完成后,查看注册表,和第一阶段一样,没有变化 :)
初步问题复现
-
新建组件【网站】,直接运行,成功打开 ie
-
右侧属性栏【网址】 填写 “https://www.baidu.com”, 运行组件,弹出的也是 ie。
将其设为默认浏览器
查看注册表
此时可以看到 ie 被改成了 Sogou, 此时你仍可以修改其默认的数据值。
重复上述运行组件的操作,结果一致。
第三阶段 下载安装搜狗浏览器, 勾选【设为默认浏览器】选项
查看注册表,此时不可以修改其默认的数据值
搜索得知,与权限有关,按照教程,修改权限,但仍不修改(默认)对应的数据值,却能改 DelegateExcute 对应的数据值。
测试组件:
1. 新建组件【网站】,直接运行,成功打开 ie
2. 右侧属性栏【网址】 填写 “https://www.baidu.com”, 运行组件,弹出的却是搜狗浏览器。
第四阶段 僵局··· 我该何去何从
我相信 windows 的开发人员,也相信 python subprocess 库的开发人员。
或许是我的代码问题,查看文档,没发现有啥特殊的参数。
诚然,我可以换其他的库,比如 os。 但 subprocess 库是 python 官方推荐使用的库,而且功能肯定没问题,我为什么要换?(更何况换了之后,在设计器组件方面,还可能有兼容问题···)
第五阶段 休道我无情 - - -> 我安装了 腾讯安全管家
在腾讯安全管家里有一个【浏览器保护】,将默认浏览器设为 ie
此时运行组件,打开的仍是搜狗···
可笑的是下面一张图
我点击了腾讯管家弹窗里的【请看详细说明】,但弹出的解决方案网址却是用搜狗打开的··· 和弹窗里的【已锁定默认浏览器为 ie】 形成了鲜明的对比。看来搜狗比腾讯流氓
第六阶段 让我们回到第二阶段,重新安装 搜狗浏览器
因为第五阶段使用的是第三阶段下载安装的搜狗浏览器, 其勾选【设为默认浏览器】选项, 那么我想如果我再次安装搜狗,但不勾选【设为默认浏览器】呢?
结局是 组件打开运行,打开的是 ie 浏览器了···
回头看
1. 我并没有从代码层面解决问题,因为我不认为实现组件的代码有问题! 如果有人对此不同意见,也可以提出来,当然我非常愿意看到有大神可以修改这段代码,使其能打开 IE!
2. 第三阶段 中,我尝试修改注册表,根据网上教程,给了全部权限,但仍不能修改! 同时我在任务管理器将所有搜狗相关的进程、服务全停止了(不确定有无漏网之鱼,当然这非常有可能···)。 也希望各位看官,可以在自己电脑上尝试一下!
向前望
解决方法:
1、在安装搜狗时,请不要勾选【设为默认浏览器】
2、远离国产流氓
礼毕撒花
后续: 若有人遇到此问题或相类似问题,可以尝试使用【系统 / 浏览器 / 打开浏览器】组件。
最直接的办法是卸载搜狗浏览器
还可以直接通过 os.sysyem(“{} www.baidu.com”.format(iexplore.exe 文件地址))
只有魔法才能打败魔法
用 360 直接锁定默认浏览器吧。流氓的鼻祖还是有点作用的
那没办法 ~~~ 治本的办法就是 国产流氓改邪归正。 对此,我无能为力。
治标不治本,没办法保证下次运行或者 20 天,100 天以后运行的时候注册表没有被在册篡改。。。。。
@4n137820uy
是的。
网站路径写的是 ie, 打开的也是搜狗吗 😅