标题:深入探讨 网站想要使用你计算机上的程序打开Web内容 出处:gOxiA=苏繁=SuFan Blog 时间:Mon, 10 Jul 2017 10:37:21 +0000 作者:gOxiA 地址:https://goxia.maytide.net/read.php/1842.htm 内容: 深入探讨 网站想要使用你计算机上的程序打开Web内容 gOxiA 因为工作需要最近在做与桌面虚拟化相关的技术内容,期间就遇到了“网站想要使用你计算机上的程序打开 Web 内容”的问题。具体是在用户安装 VDA 客户端后,通过 IE 访问 VDI 门户时会弹出这个提示,如下图所示。其实问题是比较简单的,为了避免下次再弹出提示框,我们通常会复选“不再对此程序显示此警告”,然后点击“允许”。这样在访问 VDI 门户后就会直接启动 VDA 客户端正常访问。 之后 gOxiA 又用 Microsoft Edge 访问测试了一下,会直接提示下载一个扩展名为 ICA 的文件,而这个 ICA 在当前系统上被注册为使用一个特定的应用程序打开。 也就是说在整个访问过程中是浏览器下载了一个文件,然后由指定的应用程序打开它,当在 IE 浏览器环境下时可通过复选“不再对此程序显示此警告”然后“允许”来实现通过应用程序直接打开文件的操作,这样用户体验就会更顺畅。 那么问题来了,用户说如果我复选了“不再对此程序显示此警告”,然后点击了“不允许”,可发现是误操作了该怎么办呢?该如何恢复呢?为此,gOxiA 检查了 IE 设置还真的不像禁用弹出窗口、或兼容性视图设置那样会有明确的设置选项且支持修改操作。由于通常也都是习惯于正确的操作,确实会忽略掉如果复选不再显示警告并点击了不允许会有什么结果。 期间也有咨询过微软支持,但也没有准确的解答,无奈只能自己研究 。使用 Procmon 抓包来看看这一设置都做了什么操作?! 还挺轻松立刻就锁定了位置,当我们在弹出“网站想要使用你计算机上的程序打开Web内容”的警告窗体上,复选“不再对此程序显示次警告”,并点击“允许“后,iexplore 进程会在注册表的 “HKEY_CURRENT_USER\SOFTWARE\Microsoft\Internet Explorer\Low Rights\ElevationPolicy\” 下生成一个新的 GUID 项,并写入该程序的相关键值。其中 AppPath 和 AppName 是容易理解的,也没有什么特殊之处,而 Policy 则是非常关键,默认键值为”3“。如果我们修改了这个值,例如:2,那么再下次访问时又会重新弹出警告让用户选择,只有值为3时才会默认通过安装的应用打开下载的 ICA,而不再弹出任何提示。此外,在重新复选并允许后 iexplore 进程并不会修改之前已经添加的项和对应的键值,而是会重新生成一个新的项,很有意思! 接下来 gOxiA 又重新做了一次抓包,但这次操作是复选不再提示后不允许运行,但在抓包数据中分析发现,执行这一操作并不会写入任何设置。也就是说即使用户复选了不再提示,只要点击的是不允许,那么前面的复选设置是不会起到任何效果的。 至此,答案已经出来,我们也不必担心用户是否会进行误操作,如果出现 IE 访问 VDI 门户没有启动 VDA 客户端的故障问题,那么直接从 VDA 下手排错即可,无需再在 IE 身上徘徊! 后来微软支持也给找到了一篇文档,原来早在2009年时就有微软人士详细讲解过这个安全功能,具体可参考下面这篇 Blog : https://blogs.msdn.microsoft.com/ieinternals/2009/11/30/understanding-the-protected-mode-elevation-dialog/ Generated by Bo-blog 2.1.1 Release