You need to enable JavaScript to run this app. Windows 10下如何正确使用或指向空设备,避免写入内容被读回
优惠活动
大模型
产品
解决方案
定价
更多

Windows 10下如何正确使用或指向空设备,避免写入内容被读回

Windows 10 下正确使用空设备适配原生OpenSSH的方案

踩坑的核心原因

Windows 的空设备 NUL 特殊判定逻辑,仅存在于cmd、PowerShell这类命令行壳层的流重定向规则中。
原生OpenSSH属于直接调用Win32标准文件读写API的程序,完全绕过壳层的路径解析流程,会把传入的nul、NUL字符串直接当成当前工作目录下的普通文件名处理——这就是为什么传裸nul路径会意外生成实体文件、甚至能正常读写文件内容的根本原因。
之前尝试的各类写法为什么全部失败:

  • 传入null、NULL:Windows 从未将这个字符串定义为空设备的保留名,自然会被当成普通文件路径
  • 传入\Device\Null、/Device/Null:这是面向内核态组件的设备路径格式,普通用户态程序没有直接访问权限,必然报找不到文件的错误

正确可用的写法

要让用户态程序直接识别系统空设备,必须加上Win32设备命名空间的前缀,完整的空设备路径为:
\\.\NUL
对应OpenSSH的命令写法:
ssh -o UserKnownHostsFile=\\.\NUL user@host
所有写入这个路径的内容会被系统直接丢弃,不会在磁盘上生成任何实体文件,也无法读回之前写入的内容,行为和Linux下的/dev/null完全一致。

已生成实体nul文件的清理方法

如果已经在目录下生成了资源管理器无法删除的nul实体文件,在命令行执行以下命令即可删除:
del \\.\nul

说明:带\\.\前缀的设备路径写法,对所有直接调用Win32文件API的用户态程序都生效,不局限于OpenSSH使用场景。


内容的提问来源于stack exchange,提问作者s-m-e

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.22 15:45:07