sendto
定义
sendto 指 Windows 中的一个文件系统目录,系统在文件资源管理器中把它的内容呈现为右键菜单里的「发送到」子菜单,因此它既是实际存在的文件夹,也是一个 shell 路径别名[1]。在「运行」对话框、开始菜单搜索框或资源管理器地址栏中键入 shell:sendto 并回车,资源管理器就会打开这个目录,用户可在其中新建或删除快捷方式[2][3]。
按照微软官方文档的说明,该文件夹的 KNOWNFOLDERID 为 {8983036C-27C0-404B-8F08-102D10DCFD74},默认路径为 %APPDATA%\Microsoft\Windows\SendTo,对应的旧式 CSIDL 常量为 CSIDL_SENDTO[1]。在 .NET 的 Environment.SpecialFolder 枚举中,它对应的成员名为 SendTo,取值为 9,含义是存放「发送到」菜单项的目录[4]。
shell:sendto 属于 shell 协议命令,与 shell:startup、shell:fonts 等写法同属一类,用于直接定位系统特殊文件夹,无需记忆随用户名和系统版本变化的完整路径[5]。正因路径中带有用户名变量,直接手写绝对路径容易出错,而别名写法可以在不同账户和不同 Windows 版本上保持可用[6]。
需要区分的是,sendto 本身并不是一个可在命令提示符中执行的外部程序,它描述的是文件夹及其别名;改变「发送到」菜单的行为,实际做法是改变该文件夹中的快捷方式集合[3]。右键菜单中「发送到」一项由外壳的上下文菜单处理程序提供,其注册表处理程序标识为 {7BA4C740-9E81-11CF-99D3-00AA004AE837}[7]。
原理
「发送到」子菜单的内容并不存放在配置界面里,而是由外壳枚举 SendTo 目录中的文件与快捷方式生成:目录里每有一个 .lnk 快捷方式、脚本或可执行文件,菜单中就会出现一个对应条目,条目名称即文件名称[8][9]。删除该目录中的某项,对应菜单项随即消失,整个过程不需要管理员权限,也不需要重启系统[9]。
用户选中文件并选择某个菜单项后,外壳会把所选对象的完整路径作为命令行参数传给目标程序或脚本。以批处理为例,被选中的文件路径会依次作为参数传入,等效于在命令行中执行带多个路径参数的命令。因此目标程序是否支持一次接收多个文件、是否支持某种文件格式,决定了「发送到」能否真正生效,例如把图片文件发送给文字处理程序通常无法正常解码[10]。
当目标是文件夹或其快捷方式时,普通点击执行的是复制操作,按住 Shift 键再点击则改为移动;这种复制与移动的差异由外壳按修饰键决定[7]。此外,按住 Shift 再打开右键菜单,菜单项的构成也会变化,部分项目会被隐藏或增加,说明修饰键参与了菜单项的筛选逻辑[11]。
发展历程
「发送到」作为文件右键菜单的组成部分在较早的 Windows 版本中已经存在,其目录在旧系统中以 CSIDL_SENDTO 常量标识,典型路径位于用户配置文件下的 SendTo 目录[12]。这一常量体系与 SHGetFolderPath 等外壳函数配合,使程序无需硬编码路径即可取得该目录的位置[12]。
从 Windows Vista 起,微软以 KNOWNFOLDERID 取代 CSIDL,SendTo 对应 FOLDERID_SendTo,默认路径改为漫游应用数据目录下的 Microsoft\Windows\SendTo,旧常量出于兼容目的继续保留[1][12]。相应的托管接口也延续了这一设计,.NET 中的特殊文件夹枚举保留了同名成员[4]。
Windows 11 重新设计了文件资源管理器的右键菜单,「发送到」不再出现在第一层,需要先选择「显示更多选项」才能看到,其内容依托的仍然是同一个 SendTo 目录[9][13]。
应用
最常见的用法是把常用文件夹的快捷方式放进 SendTo 目录,从而在任意位置选中文件后一步复制或移动到目标位置,省去在多个窗口之间切换的步骤[3][8]。联想知识库给出的示例是在该目录中放入本地磁盘某个分区的快捷方式,右键菜单随即出现对应条目[3]。
放入程序的快捷方式则相当于为所选文件指定一个打开方式,效果接近右键「打开方式」中选择该程序,前提是目标程序能够解析该文件类型[10]。系统默认提供的条目包括压缩文件夹、桌面快捷方式、文档、邮件收件人和蓝牙设备等,其中可移动磁盘与映射的网络驱动器在接入时才自动出现,并不常驻于该目录[9]。
借助脚本可以把该菜单当作轻量启动器:放入批处理文件后,Windows 会把所选文件的完整路径作为参数传入,脚本据此完成重命名、归档或写入日志等动作[9]。在开发与运维场景中,也有人在其中放置命令解释器或脚本的快捷方式,用于在所选文件所在目录打开命令行会话[14]。
局限
该菜单的能力受目标程序本身约束。目标程序若不支持多文件输入,或只接受特定格式,菜单项就会报错或只处理第一个参数;例如某些视频工具一次只能打开一个文件,另一些命令行工具需要为每个输入单独指定参数。这意味着把任意程序放进目录并不等于获得批量处理能力[10]。
参数传递还受命令行长度限制,以批处理脚本接收大量选中项时,所有路径拼成的命令行不能超过系统允许的字符总量,否则会截断或失败[15]。此外,批处理被调用时会闪现命令窗口,改用脚本宿主运行可避免这一现象[15]。
目录中的快捷方式全部依赖外部目标,目标被移动、卸载或权限不足时,菜单项仍在但点击无效;若该目录被清空,菜单就会呈现空白[11]。当菜单完全不显示时,可能涉及外壳上下文菜单处理程序的注册表项损坏,需要修复注册表或运行系统文件检查命令[11]。
从设计范围看,该目录只影响当前用户,路径位于用户配置目录内,不同账户需要各自配置;把它作为团队统一部署手段并不合适[1]。同时它只提供「交给谁处理」的入口,不提供参数配置界面,接收方如何解释这些路径完全由程序自行决定[9]。
参见
-
Windows 资源管理器 —— 承载「发送到」右键菜单与 SendTo 目录的文件管理组件
-
快捷方式 —— SendTo 目录中决定菜单条目的主要文件形式
-
shell 命令 —— shell:sendto 所属的特殊文件夹定位写法
-
注册表 —— 保存外壳上下文菜单处理程序与文件夹描述信息的位置
-
批处理文件 —— 常被放入该目录以实现自定义处理的脚本类型
参考资料
- knownfolderid [引用日期2026-10-29]
- how-do-i-add-or-remove-items-in-the-right-click-se [引用日期2026-10-29]
- Windows 10系统如何扩展右键菜单中“发送到”命令-联想知识库 [引用日期2026-10-29]
- system.environment [引用日期2026-10-29]
- shell-windows10-shell-sendto [引用日期2026-10-29]
- unable-to-run-shell-sendto-windows-cant-find-it [引用日期2026-10-29]
- sendto-shift-shift-sendto [引用日期2026-10-29]
- win10怎么把文件添加到右键菜单_win10自定义发送到选项【推荐】 [引用日期2026-10-29]
- tweaktown.com 上的网页 [引用日期2026-10-29]
- 打造Windows 8传送门 [引用日期2026-10-29]
- 系统小技巧:“发送到”菜单问题巧解决 [引用日期2026-10-29]
- csidl [引用日期2026-10-29]
- Hitta det dolda Windows-verktyget för att skicka filer [引用日期2026-10-29]
- Revision f7190760-49c0-4338-93a5-343e53269e5b [引用日期2026-10-29]
- [注册表类] 求助:批处理reg右键菜单实现:获取所选中的一个或多个文件路径 [引用日期2026-10-29]