Procedure GetVolumeNameForVolumeMountPoint(lpszVolumeMountPoint:LPCSTR;lpszVolumeName:LPSTR;cchBufferLength:DWORD); var Kernel32:THandle; begin Kernel32:=0; Kernel32:=GetModuleHandle(PChar('kernel32.dll')); if Kernel32 <> 0 then begin @_GetVolumeNameForVolumeMountPoint:=GetProcAddress(Kernel32,PChar('GetVolumeNameForVolumeMountPointA')); end; if Assigned(_GetVolumeNameForVolumeMountPoint) then begin _GetVolumeNameForVolumeMountPoint(lpszVolumeMountPoint,lpszVolumeName,cchBufferLength); end; end;
Procedure SetVolumeMountPoint(lpszVolumeMountPoint:LPCSTR;lpszVolumeName:LPCSTR); var Kernel32:THandle; begin Kernel32:=0; Kernel32:=GetModuleHandle(PChar( 'kernel32.dll')); if Kernel32 <> 0 then begin @_SetVolumeMountPoint :=GetProcAddress(Kernel32,PChar( 'SetVolumeMountPointA')); end; if Assigned(_SetVolumeMountPoint) then begin _SetVolumeMountPoint(lpszVolumeMountPoint,lpszVolumeName); end; end;
Procedure DeleteVolumeMountPoint(lpszVolumeMountPoint:LPCSTR); var Kernel32:THandle; begin Kernel32:=0; Kernel32:=GetModuleHandle(PChar( 'kernel32.dll')); if Kernel32 <> 0 then begin @_DeleteVolumeMountPoint:=GetProcAddress(Kernel32,PChar('DeleteVolumeMountPointA')); end; if Assigned(_DeleteVolumeMountPoint) then begin _DeleteVolumeMountPoint(lpszVolumeMountPoint); end; end;
procedure CharDiskName(OldName:string;NewName:string); var VolumeName: array [0..MAX_PATH] of Char; begin GetVolumeNameForVolumeMountPoint(PChar(OldName), VolumeName,MAX_PATH); DeleteVolumeMountPoint(PChar(OldName)); SetVolumeMountPoint(PChar(NewName), VolumeName); end;
procedure TForm1.Button1Click(Sender: TObject); begin CharDiskName('K:\','E:\'); end;