HOWTO: 解决无法打开 Excel 表格中 URL 的故障问题
HOWTO: 解决无法打开 Excel 表格中 URL 的故障问题
最近遇到一个比较典型的故障问题,排错过程跌宕起伏,事后感觉挺有代表性,决定拿出来与大家分享。故障环境是一台 Windows 10 + Office 2016 的加域设备。用户打开一个 Excel 文档,表中有一列文本包含 URL 超链接,可通过点击该文本启动 IE 去访问指定的网址。但是实际在点击链接后会提示“无法打开http://……无法下载您要求的信息。”
对其他链接进行了尝试,均提示相同的警告,但是手工新增加一个文本链接,却访问正常。之后将故障网址复制出来,粘贴到 IE 中再次访问,发现能够到达对方的服务器,但返回了“403 Forbidden”,可是将网址复制到其他浏览器,如:Edge、Chrome 中访问却是正常的。再回顾 IE 访问故障界面,发现地址栏中的中文路径在403反馈中显示的是一段乱码。说明故障的原因是由网址中包含的中文字符导致的,通常这类问题是由字符编码错误引发的。
为了求证错误,gOxiA 对正常和异常访问的 Web 数据进行了抓包,以做进一步的分析。如下结果,分析发现中文字符确实被进行了编码,但是异常访问的 Web 数据中所包含的第二次 URL 请求出现了变化,编码字符有异常,前后不符。
- 正常访问:
- 异常访问:
另外比较奇怪的是为什么会发起两次 HTTP 请求呢?!对两次访问的发起代理程序进行了分析,发现用户在 Excel 中点击 URL 时,Excel 发起了 HTTP 请求,且提交的 URL 编码是正确的。
但是,在传递给 IE 后,却被 IE 重新编码成了错误的 URL 。
至此,可以判定是因为 IE 提交的含中文字符 URL 的编码问题引发的此次故障。而中文编码问题通常出在 Windows 和 Linux 系统之间,多数原因是 Windows 提供的中文编码默认为 GB2312,而 Linux 使用的是 UTF-8,所以需要强制 IE 使用 UTF-8 来提交 URL,即可解决该问题。
但是,在执行配置操作时发现,IE 的“以 UTF-8 形式发送 URL 路径”选项被锁定了,无法修改!且明确提示“某些设置由系统管理员进行管理”。做进一步分析,确认系公司域下发的组策略所谓,不知道为什么要禁用这个选项,实属奇葩!
通知 AD 运维团队修改 GPO 不切实际,只能另寻出路!于是对 Excel 中点击 URL 的操作进行了抓包,筛选出来4000多行数据,“功夫不负有心人”在位于“HKCU\Software\Microsoft\Office\16.0\Common\Internet”下发现了一个有价值的注册表键“Encoding”,既然隶属于 Office,也就意味着可以通过 Office 选项对文档的编码进行定义。
最后,在 Excel 高级选项的 Web 选项中找到了切换文档编码的设置。即,进入 Excel 选项,依次点击“文件-选项-高级”,在右侧窗口中向下拖动至“常规”,找到“Web选项”,进入。
在“Web选项”下,切换至“编码”选项卡,找到“将此文档另存为”选项,从下拉框中找到“Unicode(UTF-8)”,点击“确定”完成设置,保存当前文档重新打开再点击 URL 尝试,故障消失。
概览 Windows 10 内置的 OpenSSH 功能
概览 Windows 10 内置的 OpenSSH 功能
回顾 gOxiA 早在2005年撰写的一篇日志,曾提到 SSH 才是王道,现在看来也不为过,命令行的魅力和实用性无法替代,不会随着科技的发展而消亡。对于管理 Linux 系统,命令行则更加至关重要,SSH 也是最佳的远程管理方式。过去要在 Windows 上使用 SSH Client 通常要找第三方工具,如 Putty,或者 Xshell,前者官方访问受阻,还被搞出过一次安全事件;后者又是需要付费的产品,实在令人难以选择。
但是现在 Windows 10 原生支持 OpenSSH Client,此外还支持 OpenSSH Server,也就是说我们无需再借助第三方的 SSH 软件去管理 Linux。需要注意的是由于 Windows 10 内置的 OpenSSH 还处于 Beta 阶段,所以微软并不建议你应用在生产环境。
迫不及待,那么我们该如何启用 OpenSSH 功能呢?!非常简单,通过系统栏的通知图标选择”所有设置“导航至”应用-应用和功能“,点击”管理可选功能“-”添加功能“,选择”OpenSSH Client (Beta)“。
如果希望借助命令行方式来安装,有两种方法可以参考:
一、 通过 PowerShell,可以使用如下命令行获取 OpenSSH 功能的完整名称,然后再进行安装。
二、通过 DISM 进行安装,过程与 PowerShell 类似,都要先找到 OpenSSH 对应的安装组件名称,再进行安装。
OpenSSH Client 安装完毕后,可以通过 CMD 执行 SSH 调用,例如要远程登录 name.cloudapp.net 的 SSH,则执行” ssh account@name.cloudapp.net“,域名首部附加 account@ 是告知所要登录的用户名,等同于 -l 参数,否则将会使用当前的 Windows 登录账号去执行 SSH 验证。
如下图所示,gOxiA 通过 ssh 命令行登录到了 远在墙外的 Azure Ubuntu 虚拟机。
Windows 10 当前内置的 OpenSSH Client 版本,满足基本的操作还是没问题的,但是诸如 nano、rz 等程序指令还不能完好的支持。考虑是不是可以尝试给 Azure Ubuntu VM 添加个简单的图形界面,能够以 RDP 协议登录?!
[Tips] 定制 Windows10 开始界面时 Import-StartLayout 的常见问题
定制 Windows10 开始界面时 Import-StartLayout 的常见问题
在部署 Windows 10 前,IT人员通常会生成自定义的 Windows 10 参考映像,为了提升用户体验并满足企业桌面标准化,都会对 Windows 10 的开始界面进行定制,添加符合规范的程序图标并进行分组排列和组合。想必大家已经踩坑,自 16299 开始通过在应答文件中启用 CopyProfile 来实现开始界面的统一已经失效,所以必须借助组策略强制部署 StartLayout,或通过 PPKG 实现。当然,也可以使用 Import-StartLayout 导入 StartLayout.xml 为用户指定默认的开始界面布局,但是该方法对已生成用户配置文件的用户是无效的。对于不能通过组策略实现开始界面统一部署的用户,在 OOBE 阶段使用 Import-StartLayout 也是一个不错的选择,gOxiA 就是通过这个方法实现所有新登录用户使用统一的开始界面布局。
但是在实践 Import-StartLayout 过程中,也遇到一些比较典型的问题,会比较常见,特以此文分享于大家。
Import-StartLayout 命令行通常为“Import-StartLayout -LayoutPath C:\startlayout.xml -MountPath C:\”,其中 -LayoutPath 是指定开始界面布局配置文件所在路径,-MountPath 是指定系统卷。在上面的截图中有展示的是三个常见故障:
- Import-StartLayout :文件 不是有效的布局文件
该问题通常是因为修改了 StartLayout.xml 导致的,其中包含了未满足规范的语句,这就需要进行具体的检查。 - Import-StartLayout :未能找到路径 的一部分
其中路径类似“D:\Users\Default\AppData\Local\Microsoft\Windows\Shell\LayoutModification.xml”,通常这个故障是因为 IT人员在 Unattend 中重新指定了用户配置文件目录导致的,开始界面定制文件默认会应用到 Default 对应目录中,所以处理该故障就要先确定 Default 所在的卷。 - Import-StartLayout :对路径 的访问被拒绝
此故障很容易理解,要执行 Import-StartLayout 需要管理员权限运行,如果系统启用了 UAC,要执行它就必须提权运行。
最后,额外分享一下开始界面布局文件中需要注意的事项,有些 IT人员会在布局配置中添加任务栏图标的定制(CustomTaskbarLayoutCollection),那么必须要对 CustomTaskLayoutCollection 进行声明,即添加“xmlns:taskbar="http://schemas.microsoft.com/Start/2014/TaskbarLayout"”。