为虚拟分区设置卷标 (Set Volume Label for SUBST Drive)

2024-03-05 02:48

本文主要是介绍为虚拟分区设置卷标 (Set Volume Label for SUBST Drive),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

关键词: 虚拟分区,卷标,SUBST
适用人群:SUBST爱好者
平台: Windows XP/Vista

相信大家对磁盘分区卷标(disk volume label)都不陌生,在Windows中每个磁盘分区都可设置一个卷标,在资源管理器(explorer)我的电脑中可以看得到,如果没有设置卷标,资源管理会显示一个默认值(比如Local Disk等)。

常用的修改卷标的方法有三种:

  1. 在资源管理器中重命名分区;
  2. 在命令行中使用LABEL命令;
  3. 在WIN32程序/脚本中调用SetVolumeLabel函数。

对于真实的物理分区,它的卷标是存在于磁盘分区结构中的,通过以上三种方法都可方便地修改卷标。但是对于SUBST命令得到的虚拟分区,它的“卷标”是什么?如何修改它的“卷标”?


直观地理解这个问题,SUBST只是简单地把一个路径省略成盘符(associates a path with a drive letter),那么它就没有卷标这个概念(一个路径怎么会有卷标)。然而实际情况要稍微复杂一点点儿。

我在XP和Vista系统上都做了一番实验,过程就不说了,直接给出结果。有两个方面:一是显示出来的卷标是什么;二是能否以及如何修改卷标。

为了方便起见,不妨设现在磁盘中有物理分区C:,该分区下有个目录叫Temp,路径为C:/Temp,用SUBST目录把C:的根目录或者Temp目录虚拟成Z:,即

a) SUBST Z: C:/
b) SUBST Z: C:/Temp/

一、虚拟分区的卷标

通过DIR命令看到的Z:的卷标都与C:相同(如果C:没有卷标则Z:也没有)。

在资源管理器中看到的卷标有如下三种可能:

  1. 如果C:有卷标,则Z:的卷标与之相同;
  2. 如果C:没有卷标,但注册表中存在相关注册表项[1],则显示此注册表项的值;
  3. 如果C:没有卷标,注册表项也不存在,则Z:也没有卷标(会显示默认的Local Disk等)

注[1]: 相关注册表项为HKCU/Software/Microsoft/Windows/CurrentVersion/Explorer/DriveIcons/Z/DefaultLabel下的(Default),或HKLM中相应键值。

二、修改虚拟分区卷标

如果将C:/虚拟为Z:(即上面提到的命令a),那么无论使用哪种方式修改Z:的卷标,其实都是在修改C:;但需要注意的事,根据虚拟分区卷标的显示规则,当把Z:的卷标删除时,C:的卷标也随之被删除,C:将显示Local Disk等默认值,但Z:显示的有可能是注册表中的内容。

如果将C:/Temp/虚拟为Z:(即上面提到的命令b),那么使用Lable命令或者SetVolumeLabel函数都无法修改Z:的卷标(提示Access Denied);使用资源管理器重命名方式修改Z:的卷标,其实是修改了上面提到的注册表项的值,但根据虚拟分区卷标的显式规则,只有当C:没有卷标时,才会显示注册表中的内容。

——– 小巧的分隔符 ——–

综上,如果希望在资源管理器中能够使得各个虚拟分区显示各不相同的卷标,需要将相应的物理分区卷标删除,并保证注册表中有相关的注册表项(可以通过资源管理器修改,也可以通过脚本或程序直接修改注册表)。

——– 身轻如燕的分隔符 ——–

最后,感谢Drinker Lu提出了这个问题。

 

 

引自: http://www.zhongqingju.com/?p=78

这篇关于为虚拟分区设置卷标 (Set Volume Label for SUBST Drive)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/775085

相关文章

python设置环境变量路径实现过程

《python设置环境变量路径实现过程》本文介绍设置Python路径的多种方法:临时设置(Windows用`set`,Linux/macOS用`export`)、永久设置(系统属性或shell配置文件... 目录设置python路径的方法临时设置环境变量(适用于当前会话)永久设置环境变量(Windows系统

Go语言编译环境设置教程

《Go语言编译环境设置教程》Go语言支持高并发(goroutine)、自动垃圾回收,编译为跨平台二进制文件,云原生兼容且社区活跃,开发便捷,内置测试与vet工具辅助检测错误,依赖模块化管理,提升开发效... 目录Go语言优势下载 Go  配置编译环境配置 GOPROXYIDE 设置(VS Code)一些基本

小白也能轻松上手! 路由器设置优化指南

《小白也能轻松上手!路由器设置优化指南》在日常生活中,我们常常会遇到WiFi网速慢的问题,这主要受到三个方面的影响,首要原因是WiFi产品的配置优化不合理,其次是硬件性能的不足,以及宽带线路本身的质... 在数字化时代,网络已成为生活必需品,追剧、游戏、办公、学习都离不开稳定高速的网络。但很多人面对新路由器

linux hostname设置全过程

《linuxhostname设置全过程》:本文主要介绍linuxhostname设置全过程,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录查询hostname设置步骤其它相关点hostid/etc/hostsEDChina编程A工具license破解注意事项总结以RHE

MySQL 定时新增分区的实现示例

《MySQL定时新增分区的实现示例》本文主要介绍了通过存储过程和定时任务实现MySQL分区的自动创建,解决大数据量下手动维护的繁琐问题,具有一定的参考价值,感兴趣的可以了解一下... mysql创建好分区之后,有时候会需要自动创建分区。比如,一些表数据量非常大,有些数据是热点数据,按照日期分区MululbU

Python设置Cookie永不超时的详细指南

《Python设置Cookie永不超时的详细指南》Cookie是一种存储在用户浏览器中的小型数据片段,用于记录用户的登录状态、偏好设置等信息,下面小编就来和大家详细讲讲Python如何设置Cookie... 目录一、Cookie的作用与重要性二、Cookie过期的原因三、实现Cookie永不超时的方法(一)

c++中的set容器介绍及操作大全

《c++中的set容器介绍及操作大全》:本文主要介绍c++中的set容器介绍及操作大全,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧... 目录​​一、核心特性​​️ ​​二、基本操作​​​​1. 初始化与赋值​​​​2. 增删查操作​​​​3. 遍历方

C++链表的虚拟头节点实现细节及注意事项

《C++链表的虚拟头节点实现细节及注意事项》虚拟头节点是链表操作中极为实用的设计技巧,它通过在链表真实头部前添加一个特殊节点,有效简化边界条件处理,:本文主要介绍C++链表的虚拟头节点实现细节及注... 目录C++链表虚拟头节点(Dummy Head)一、虚拟头节点的本质与核心作用1. 定义2. 核心价值二

mysql查询使用_rowid虚拟列的示例

《mysql查询使用_rowid虚拟列的示例》MySQL中,_rowid是InnoDB虚拟列,用于无主键表的行ID查询,若存在主键或唯一列,则指向其,否则使用隐藏ID(不稳定),推荐使用ROW_NUM... 目录1. 基本查询(适用于没有主键的表)2. 检查表是否支持 _rowid3. 注意事项4. 最佳实

shell中set -u、set -x、set -e的使用

《shell中set-u、set-x、set-e的使用》本文主要介绍了shell中set-u、set-x、set-e的使用,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参... 目录✅ 1. set -u:防止使用未定义变量 作用: 示例:❌ 报错示例输出:✅ 推荐使用场景:✅ 2. se