![用于本地计算机名称的句点字符](https://linux22.com/image/1434961/%E7%94%A8%E4%BA%8E%E6%9C%AC%E5%9C%B0%E8%AE%A1%E7%AE%97%E6%9C%BA%E5%90%8D%E7%A7%B0%E7%9A%84%E5%8F%A5%E7%82%B9%E5%AD%97%E7%AC%A6.png)
我对用作本地计算机名称快捷方式的句点字符感到疑惑.
。例如,您可以在登录 Windows 7 时使用它来指定您输入的用户帐户属于本地计算机而不是域:
.\MyLocalUserAccount
您还可以在 Windows Management Instrumentation (WMI) 查询中使用它来表明目标是本地计算机而不是远程计算机。您还可以在使用命名管道时使用它来实现类似的目的。
但是,您不能将其用作计算机的 UNC 网络名称,如下所示:
\\.\MyShare
这个字符是否有正式名称(例如“LocalHostToken”)以及何时何地可以将其用于此目的?
答案1
微软的这篇文章对以下内容进行了很好的描述\\.\
:
命名文件、路径和命名空间 - Win32 设备命名空间。
文章说:
该
\\.\
前缀将访问 Win32 设备命名空间,而不是 Win32 文件命名空间。如果 API 支持这种类型的访问,则可以通过这种方式直接访问物理磁盘和卷,而无需通过文件系统。您可以通过这种方式访问磁盘以外的许多设备(例如,使用 CreateFile 和 DefineDosDevice 函数)。例如,如果您想要打开系统的串行通信端口 1,则可以在对 CreateFile 函数的调用中使用“COM1”。这样做之所以有效,是因为 COM1–COM9 是 NT 命名空间中的保留名称的一部分,尽管使用前缀
\\.\
也适用于这些设备名称。相比之下,如果您安装了 100 端口串行扩展板并想要打开 COM56,则无法使用“COM56”打开它,因为 COM56 没有预定义的 NT 命名空间。您需要使用打开它,\\.\COM56
因为\\.\
直接进入设备命名空间而不尝试查找预定义的别名。使用 Win32 设备命名空间的另一个示例是使用 CreateFile 函数
\\.\PhysicalDiskX
(其中 X 是有效的整数值)或\\.\CdRomX
。这允许您直接访问这些设备,绕过文件系统。这是因为这些设备名称是在枚举这些设备时由系统创建的,并且某些驱动程序还会在系统中创建其他别名。例如,实现名称“C:\”的设备驱动程序有自己的命名空间,该命名空间也恰好是文件系统。通过 CreateFile 函数的 API 通常与前缀一起使用,
\\.\
因为 CreateFile 是用于打开文件和设备的函数,具体取决于您使用的参数。如果你正在使用 Windows API 函数,则应使用前缀
\\.\
仅访问设备,而不是文件。大多数 API 不支持
\\.\
;只有专门设计用于设备命名空间的 API 才能识别它。请务必检查每个 API 的参考主题以确保无误。
除其他应用程序外,此设备寻址约定应始终在命令提示符(cmd)中起作用。