出于工作习惯,我会建立多个虚拟桌面,在每个虚拟桌面内处理不同的工作任务,也方便把工作和生活相关内容区分开。
日常工作需要大量使用到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文档
使用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
代表已生效。