用于本地计算机名称的句点字符

用于本地计算机名称的句点字符

我对用作本地计算机名称快捷方式的句点字符感到疑惑.。例如,您可以在登录 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)中起作用。

相关内容