盘符


盘符

文章插图
盘符【盘符】盘符是DOS、WINDOWS系统对于磁碟存储设备的标识符 。一般使用26个英文字元加上一个冒号:来标识 。由于历史的原因 , 早期的PC机一般装有两个软碟驱动器 , 所以 , "A:"和"B:"这两个盘符就用来表示软碟机 , 早期的软碟尺寸有8寸、5寸、3.5寸等 。而硬碟设备就是从字母C:开始 , 一直到Z: 。对于UNIX , LINUX系统来说 , 则没有盘符的概念 , 但是目录和路径的概念是相同的 。
基本介绍中文名:盘符
外文名:The drive letter
用途:磁碟存储设备的标识符
用于系统:DOS、WINDOWS
解决混乱在转换完分区格式之后 , 在升级完电脑之后 , 在使用完虚拟光碟机之后 , 在安装好多块硬碟之后…… , 都有可能出现磁碟盘符发生混乱的现象 , 面对该现象你该如何“拨乱反正”呢?本文下面提供的几则方法 , 相信会给你带来一定的帮助 。
盘符

文章插图
禁止硬碟法将两块硬碟设定好主从关係并正确连线 , 然后开机进入BIOS设定程式 。在“Standard CMOS Features”选项中将从盘参数项设为“NONE” , 禁止掉从盘 。在“Advanced BIOS Features”选项中设定主盘为启动硬碟 。保存设定后重新启动 , 则硬碟盘符就会按照主、从盘的分区顺序排列好了 。这种方法的缺点是从盘只能在Windows下正常使用 , 在纯DOS模式下无法识别从盘 。重新分区设定好主从关係并正确连线硬碟后 , 使用任一款分区软体将从盘全部划为逻辑分区 , 则从盘的盘符就会按顺序排在主盘后面 。(陈会安)Win 9x使用Letter AssignerLetter Assigner能够任意指定硬碟的盘符 。启动Letter Assigner , 在Letter Assigner的工具列下方列出了“A~Z”26个盘符 , 其中黄色表示当前可以选择使用 , 灰色表示当前不可使用 。在主视窗中选中需要修改的盘符 , 然后从盘符栏中选择修改后的盘符 , 执行“档案→保存”命令 , 重新启动计算机即可 。在操作过程中 , 如果需要放弃修改 , 只要执行“编辑→恢复原版”或者按下“Ctrl+Z”组合键即可 。一般情况下系统盘的盘符不能修改 , 否则可能造成系统启动错误 。当修改系统盘的盘符时 , Letter Assigner会弹出一个提示视窗 。(LanFu)系统设定法Windows2000/XP/2003中在Windows2000/XP/2003中修改错乱的盘符十分简单 , 通过系统自带的“磁碟管理”程式即可轻鬆搞定 。点击“开始→运行” , 输入diskmgmt.msc , 即可启动“磁碟管理” 。下面我们来看看如何修改盘符 。第一步:如图1所示 , 滑鼠右键点击需要修改盘符的驱动器 , 选择“更改驱动器号和路径”命令 。在更改驱动器的盘符时要注意系统盘的盘符是无法修改的 , 也不允许随便修改 , 否则系统会启动不了 。第二步:在弹出的“更改驱动器号和路径”对话框上按“更改”按钮 , 在接下来的视窗中 , 为该驱动器指定一个新的驱动器号(盘符)即可 。小提示:如果你要指定的盘符已经被别的磁碟分区所占用了 , 可以先修改占用了盘符的该磁碟分区 , 将它指定为别的盘符 , 把该磁碟分区占用的盘符释放出来 。Windows9X/Me中Windows9X/Me中通常只能从设定硬碟的主从跳线和BIOS的设定 , 或者藉助第三方工具Letter Assigner去调整硬碟的盘符 。我们只要在程式中点选要改变的磁碟分区(如图2) , 然后在工具列上指定英文盘符 , 调整完后按“档案→保存”储存设定、重新启动计算机 , 就 OK 了 。要注意的是 , Letter Assigner无法修改Windows系统所在的分区 , 当你做了不适当的调整时 , Letter Assigner会出现警告信息提醒你 , 这时候你千万不要强行修改 。最后 , 若你使用的是记忆体仿真硬碟 (虚拟硬碟) , Letter Assigner可以用辨识“MS-RAMDRIVE”磁碟卷标的方式让你也能指定虚拟磁碟的盘符 。利用PartitionMagicPartitionMagic(分区魔术师)可以对硬碟进行重新分区、格式化、複製分区等操作 , 使用它修改盘符的操作方法如下:启动PartitionMagic , 滑鼠右击需要修改的盘符 , 在快捷选单中选择“高级→修改驱动器盘符” , 然后在弹出的“更改驱动器盘符”视窗中选择新的盘符 , 单击“确定”按钮 , 接着选择“常规→套用改变”命令 , 按照提示重新启动即可 。另:(1)Windows 2000/XPWindows 2000/XP一般不会产生盘符交叉的问题 , 但前提是安装Windows 2000、XP时只安装了一块硬碟 , 安装结束后才能挂上第二块硬碟 , 假如是在添加第二块硬碟后安装Windows 2000/XP的话 , 那幺仍然会产生盘符交叉 , 而且这是永久性的 , 即使取下第二块硬碟也无济于事 。不过 , 我们可以进入“控制台→管理工具→计算机管理”视窗 , 在“计算机管理”下选择“磁碟管理” , 选中相应分区 , 从右键选单中执行“更改驱动器名和路径”命令 , 在图1对话框中点击“更改”按钮 , 然后重新指派一个驱动器号 , 再对其他分区重複执行该命令即可 。(2)Windows 9x/Me有一个简单的办法可以解决这一问题 , 只须在BIOS设定程式中稍稍动些脑筋 , 将第一块硬碟设定为“User”或“Auto” , 而将第二块硬碟设定为“NONE” , 这样儘管BIOS无法发现这块硬碟 , 但Windows 9x/Me的即插即用功能会自动检测第二块硬碟 , 并自动分配盘符 , 令人担心的盘符交叉现象也就不复存在了 。当然在纯DOS模式下第二块硬碟是看不到的 。(3)Fdisk我们可以在执行Fdisk命令分区时 , 选中“Change current fixed disk drive”项 , 然后选中第二块硬碟将所有分区删除 , 再选择“Create Extended DOS Partition”将所有空间都分配给扩展分区使用 , 接下来再进行分区 。也就是说不创建主分区只创建扩展分区 , 最后格式化就行了 。属性设定法在Windows 98或Windows Me作业系统中 , 使用虚拟光碟机软体时 , 很容易造成物理光碟机的盘符发生混乱 , 从而影响一些光碟程式的正常使用 。为此笔者建议你按照下面的属性设定法 , 来将物理光碟机的盘符修正过来:打开Windows系统的控制台视窗 , 双击其中的“系统”图示 , 在弹出的系统属性设定界面中 , 单击“设备管理器”选项 , 然后展开该选项页面中的“CD-ROM驱动器”项目 , 并将发生盘符混乱的物理光碟机选中 , 再用滑鼠右键单击之 , 从弹出的快捷选单中执行“属性”命令;在随后弹出的属性设定页面中 , 将“保留驱动器号”设定项处的“开始驱动器号”指定为物理光碟机原先使用的盘符;完成上面的设定后 , 单击“确定”按钮退出属性设定界面 , 并将计算机重新启动一下 , 这样物理光碟机的盘符又恢复正常了 。盘符消失故障是装有Windows 98作业系统的计算机需要驱动程式所致 。当赶到多媒体教室一看 , 系统明明是Windows XP , 而这个系统是不需要随身碟驱动程式的 。打开“我的电脑” , 果然如同事所说 , 里面没有随身碟盘符 。更换了USB接口后 , 仍不能解决问题 。细心观察 , 发现虽然“资源管理器”中没有出现随身碟盘符 , 但在系统托盘中却有此硬体的标识 。于是 , 笔者在“资源管理器”视窗中的地址栏里输入随身碟盘符 , 当回车后 , 却弹出了“本次操作由于这台计算机的限制而被取消 , 请与您的管理员联繫”的对话框 。是不是该盘符被限制了呢?解决办法:右击“我的电脑” , 在弹出的快捷选单中选择“管理”命令 , 进入到“计算机管理”视窗 , 依次展开“存储/可移动存储” , 单击“磁碟管理”一项 , 在视窗右侧 , 看到随身碟运行状态为“良好” , 这说明随身碟没问题 。右击该视窗中的随身碟盘符 , 选择其快捷选单的“更改驱动器名和路径”命令 , 在出现的对话框中 , 点击〔更改〕按钮 , 为其选择一个未被使用的盘符 。确定之后退出 。重新打开“我的电脑” , 久违的随身碟盘符出现了 。至此问题得到解决 。实用大全装扮盘符每次打开“我的电脑”或“资源管理器” , 驱动器形状的盘符就映入我们的眼帘 , 时间一长 , 就容易产生厌倦的感觉 。我们能不能给它改变一下 , 让这些灰色的盘符变得更个性化一些?跟着下面做就OK 。第一步:我们先找到后缀名为“ico”或“bmp”的漂亮小图示 , 图示不能太大了 , 最大只能是32×32像素 , 将它放置在需要修改盘符的磁碟分区下 。这里假设要修改盘符的磁碟分区为D糟、小图示的档案名称是cpcw.ico 。第二步:打开记事本 , 在里面写上以下的内容:[AutoRun]open=cpcwsoftware.exeicon=cpcw.ico第三步:将这个档案保存在D糟根目录下 , 保存类型为“所有档案” , 档案名称为Autorun.inf 。重新启动电脑 , 再打开“我的电脑”或“资源管理器”你就会发现系统带给你全新的盘符 , 全新的感觉!如果你对图示不满意 , 只要使用新的小图示替换掉那个小图示即可(档案名称必须相同) , 不需要修改Autorun.inf 。小知识:Autorun.inf是一个文本形式的配置档案 , 我们可以用文本编辑软体进行编辑 , 它只能位于驱动器的根目录下 。这个档案包含了需要自动运行的命令 , 如改变的驱动器图示、运行的程式档案、可选快捷选单等内容 。Autorun.inf档案的第二行是指要自动运行的程式名称 , 这个我们不用管它 , 而第三行“icon=cpcw.ico”才是我们自定义盘符图示的内容 , 我们可以在驱动器的根目录下放多个小图示 , 想使用哪个图示作为盘符图示的内容 , 只要更改“icon=图示的名称”即可 。映射盘符要将经常访问的本地磁碟资料夹变为磁碟 , 可以使用开始-运行-cmd的Subst命令 。在Windows XP系统中 , 该命令程式档案Subst.exe存放在\Windows\System32资料夹中(在Windows 98/2000中也有这个命令) , 其功能是将路径与驱动器号关联 , 即以磁碟驱动器符代替资料夹名称 , 格式为:Subst [drive1: [drive2:]path] 。其中 , “Drive1:”是指定要指派路径的虚拟驱动器 , “[drive2:]path”指定物理驱动器和要指派给虚拟驱动器的路径 。比如Subst F: d:\mydoc命令 , 即是把d:\mydoc资料夹虚拟成F驱动器 。之后 , 对F盘的操作实际是对d:\mydoc资料夹的操作 。注意 , 新盘符不能与已有的盘符重複 , 而且盘符只能由单个字母组成 。该命令执行后 , 直到关闭电脑前一直有效 。如果想每次开机即把d:\mydoc资料夹虚拟成F驱动器 , 可以把subst F: d:\mydoc命令加到C:\AUTOEXEC.BAT档案中 。此外 , 如果想在关闭电脑前即删除虚拟的盘符 , 可在cmd下执行Subst F: /D命令即可 。添加盘符有时在Windows 2000/XP/2003插上移动硬碟或快闪记忆体时系统没反应 , 在“我的电脑”中找不到它们的盘符 。这时候我们就需要手工给它们添加盘符 。启动“磁碟管理”程式 , 在上面找到新安装的没有盘符的驱动器 , 用滑鼠右键点击它 , 选择“更改驱动器号和路径”命令 , 在弹出的更改驱动器号和路径对话框上按“添加”按钮 , 在接下来的视窗中 , 为该驱动器指定一个新的驱动器号(盘符)即可 。有趣的是 , 如果曾用PQMagicc隐藏过一个分区 , 只要在“磁碟管理”对话框中给磁碟分配一个盘符 , 这样这个分区就可以看到了 。删除盘符很多虚拟光碟机软体如果卸载不当 , 就会在系统中留下它创建的虚拟光碟机的盘符 , 就算你在控制台里卸载掉跟它相关的设备 , 仍然没有用 。最好的方法就是重新安装一个同样版本的虚拟光碟机软体来“禁用/删除”残留的虚拟光碟机盘符 。正确的卸载虚拟光碟机且不留下多余无用盘符的方法是 , 先禁用了所有的虚拟光碟机 , 关闭驻留后台的虚拟光碟机 , 然后再卸载虚拟光碟机软体 , 这样就不会留有残余的虚拟光碟机盘符 。在Windows XP中修改驱动器盘符修改盘符当您向计算机中添加驱动器(如额外的硬碟驱动器、CD驱动器或与驱动器相对应的存储设备)时, Windows将自动为其分配一个盘符 。儘管如此, 这种分配方式可能无法满足您的系统需求, 举例来说, 您可能已经将Windows分配给一个新增驱动器的盘符映射到了一个网路驱动器上 。当您需要对驱动器盘符进行修改时, 请依次执行下列操作步骤:右键单击My Computer(我的电脑), 并选择Manage(管理) 。在Computer Management(计算机管理)视窗中, 单击Disk Management(磁碟管理) 。在右侧窗格中, 您将看到系统中的驱动器列表 。其中, CD-ROM驱动器被列在该窗格的最底部 。右键单击您所希望修改的驱动器或设备, 并在随后出现的快捷选单中选择Change Drive Letter and Paths(修改驱动器盘符与路径) 。单击Change(修改), 点击Assign the following drive letter(分配以下驱动器盘符)并选择您希望分配的驱动器盘符, 之后单击OK(确定) 。这种方式将不允许您修改引导驱动器或系统驱动器盘符 。此外, 许多基于MS-DOS和Windows的应用程式都会引用一个特定的驱动器盘符(例如环境变数) 。如果您修改了相应的驱动器盘符, 那幺, 这些程式将有可能无法正常工作 。修改原始码unit uMain;interfaceusesWindows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,Dialogs, StdCtrls, ExtCtrls;typeTMainfrm = class(TForm) btn1: TButton;lbledt1: TLabeledEdit;lbledt2: TLabeledEdit;mmo1: TMemo;procedure btn1Click(Sender: TObject);private{ Private declarations }public{ Public declarations }end;varMainfrm: TMainfrm;_GetVolumeNameForVolumeMountPoint: function (lpszVolumeMountPoint: LPCSTR;lpszVolumeName: LPSTR; cchBufferLength: DWORD): BOOL; stdcall;_SetVolumeMountPoint: function (lpszVolumeMountPoint: LPCSTR;lpszVolumeName: LPCSTR): BOOL; stdcall;_DeleteVolumeMountPoint: function (lpszVolumeMountPoint: LPCSTR): BOOL; stdcall;implementation{$R *.dfm}function GetVolumeNameForVolumeMountPoint(lpszVolumeMountPoint: LPCSTR;lpszVolumeName: LPSTR; cchBufferLength: DWORD): BOOL;varKernel32: THandle;beginif not Assigned(_GetVolumeNameForVolumeMountPoint) thenbeginKernel32 := GetModuleHandle(PChar( ' kernel32.dll ' ));if Kernel32 0 then @_GetVolumeNameForVolumeMountPoint :=GetProcAddress(Kernel32, PChar( ' GetVolumeNameForVolumeMountPointA ' ));end;if Assigned(_GetVolumeNameForVolumeMountPoint) thenResult := _GetVolumeNameForVolumeMountPoint(lpszVolumeMountPoint, lpszVolumeName, cchBufferLength)else Result := False;end;function SetVolumeMountPoint(lpszVolumeMountPoint: LPCSTR; lpszVolumeName: LPCSTR): BOOL;varKernel32: THandle;beginif not Assigned(_SetVolumeMountPoint) thenbeginKernel32 := GetModuleHandle(PChar( ' kernel32.dll ' ));if Kernel32 0 then@_SetVolumeMountPoint := GetProcAddress(Kernel32, PChar( ' SetVolumeMountPointA ' ));end;_SetVolumeMountPoint(lpszVolumeMountPoint, lpszVolumeName);{if Assigned(_SetVolumeMountPoint) thenResult :=_SetVolumeMountPoint(lpszVolumeMountPoint, lpszVolumeName)elseResult := False; }end;function DeleteVolumeMountPoint(lpszVolumeMountPoint: LPCSTR): BOOL;varKernel32: THandle;beginif not Assigned(_DeleteVolumeMountPoint) thenbeginKernel32 := GetModuleHandle(PChar( ' kernel32.dll ' ));if Kernel32 0 then @_DeleteVolumeMountPoint := GetProcAddress(Kernel32, PChar( ' DeleteVolumeMountPointA ' ));end;if Assigned(_DeleteVolumeMountPoint) thenResult := _DeleteVolumeMountPoint(lpszVolumeMountPoint)elseResult := False;end;procedure TMainfrm.btn1Click(Sender: TObject);varVolumeName: array [0..MAX_PATH] of Char; beginGetVolumeNameForVolumeMountPoint(PChar(lbledt1.Text), VolumeName, MAX_PATH);//获取制定分区的GUIDDeleteVolumeMountPoint(PChar(lbledt1.Text));//删除制定分区盘符SetVolumeMountPoint(PChar(lbledt2.Text), VolumeName);//根据获取的GUID设定新的盘符end;