
盘符
盘符是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 Assigner
Letter 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”磁碟卷标的方式让你也能指定虚拟磁碟的盘符。
利用PartitionMagic
PartitionMagic(分区魔术师)可以对硬碟进行重新分区、格式化、複製分区等操作,使用它修改盘符的操作方法如下:
启动PartitionMagic,滑鼠右击需要修改的盘符,在快捷选单中选择“高级→修改驱动器盘符”,然后在弹出的“更改驱动器盘符”视窗中选择新的盘符,单击“确定”按钮,接着选择“常规→套用改变”命令,按照提示重新启动即可。
另:
(1)Windows 2000/XP
Windows 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.exe
icon=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;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ExtCtrls;
type
TMainfrm = class(TForm)
btn1: TButton;
lbledt1: TLabeledEdit;
lbledt2: TLabeledEdit;
mmo1: TMemo;
procedure btn1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Mainfrm: 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;
var
Kernel32: THandle;
begin
if not Assigned(_GetVolumeNameForVolumeMountPoint) then
begin
Kernel32 := GetModuleHandle(PChar( ' kernel32.dll ' ));
if Kernel32 0 then @_GetVolumeNameForVolumeMountPoint :=
GetProcAddress(Kernel32, PChar( ' GetVolumeNameForVolumeMountPointA ' ));
end;
if Assigned(_GetVolumeNameForVolumeMountPoint) then
Result := _GetVolumeNameForVolumeMountPoint(lpszVolumeMountPoint, lpszVolumeName, cchBufferLength)
else
Result := False;
end;
function SetVolumeMountPoint(lpszVolumeMountPoint: LPCSTR; lpszVolumeName: LPCSTR): BOOL;
var
Kernel32: THandle;
begin
if not Assigned(_SetVolumeMountPoint) then
begin
Kernel32 := GetModuleHandle(PChar( ' kernel32.dll ' ));
if Kernel32 0 then
@_SetVolumeMountPoint := GetProcAddress(Kernel32, PChar( ' SetVolumeMountPointA ' ));
end;
_SetVolumeMountPoint(lpszVolumeMountPoint, lpszVolumeName);
{if Assigned(_SetVolumeMountPoint) then
Result :=_SetVolumeMountPoint(lpszVolumeMountPoint, lpszVolumeName)
else
Result := False; }
end;
function DeleteVolumeMountPoint(lpszVolumeMountPoint: LPCSTR): BOOL;
var
Kernel32: THandle;
begin
if not Assigned(_DeleteVolumeMountPoint) then
begin
Kernel32 := GetModuleHandle(PChar( ' kernel32.dll ' ));
if Kernel32 0 then @_DeleteVolumeMountPoint := GetProcAddress(Kernel32, PChar( ' DeleteVolumeMountPointA ' ));
end;
if Assigned(_DeleteVolumeMountPoint) then
Result := _DeleteVolumeMountPoint(lpszVolumeMountPoint)
else
Result := False;
end;
procedure TMainfrm.btn1Click(Sender: TObject);
var
VolumeName: array [0..MAX_PATH] of Char;
begin
GetVolumeNameForVolumeMountPoint(PChar(lbledt1.Text), VolumeName, MAX_PATH);//获取制定分区的GUID
DeleteVolumeMountPoint(PChar(lbledt1.Text));//删除制定分区盘符
SetVolumeMountPoint(PChar(lbledt2.Text), VolumeName);//根据获取的GUID设定新的盘符
end;