出于工作习惯,我会建立多个虚拟桌面,在每个虚拟桌面内处理不同的工作任务,也方便把工作和生活相关内容区分开。

日常工作需要大量使用到Excel表格,但一直有一个觉得麻烦的事情,在已有Excel表格打开的情况下,在另一个虚拟桌面再次新建/打开Excel表格时,虚拟桌面会自动跳转到上一个Excel表格所在的桌面,因此我需要手动把新的Excel表格拖到另一个虚拟桌面。

Google寻找了一番,发现与下述链接描述的问题相同,也得到了一个解决方案:windows 10 - Avoid automatically switching to other virtual desktop when opening a file - Super User

但该方案在最新版Windows 11中并不可用,怀疑主要是ftype命令支持的问题,由于ftype

命令对应修改注册表中HKEY_CLASSES_ROOT\xxxfile\shell\Open\command键值,因此可直接通过修改注册表的方式解决问题。参考上述链接,可用的解决方案如下:

通过开始菜单、任务栏等Excel快捷方式新建文档

右键打开Excel快捷方式属性,在「目标」项内,添加/X/X前为Excel程序所在位置。如把"C:\Program Files\Microsoft Office\root\Office16\EXCEL.EXE"修改为"C:\Program Files\Microsoft Office\root\Office16\EXCEL.EXE" /X即可。

Excel快捷方式属性

打开已存在的Excel文档

使用Windows+R快捷键,运行regedit命令打开注册表,对于.xlsx格式,定位至HKEY_CLASSES_ROOT\Excel.Sheet.12\shell\Open\command,在(默认)键值中"%1"前添加/X。如修改"C:\Program Files\Microsoft Office\Root\Office16\EXCEL.EXE" "%1""C:\Program Files\Microsoft Office\Root\Office16\EXCEL.EXE" /X "%1"

注册表

对于其他格式,可以在命令提示符中使用assoc命令判断对应的注册表位置。首先使用Windows+R快捷键,运行cmd命令(不能使用PowerShell)。在命令提示符窗口内,例如,对于.xls格式,键入assoc .xls,返回值Excel.Sheet.8,则在注册表内对应定位至HKEY_CLASSES_ROOT\Excel.Sheet.8\shell\Open\command即可。

命令提示符

在注册表内修改完成后,也可通过ftype命令检验是否修改生效,如键入ftype Excel.Sheet.8,返回Excel.Sheet.8="C:\Program Files\Microsoft Office\Root\Office16\EXCEL.EXE" /X "%1"含有/X代表已生效。