已经知道GUID是多少了。根据GUID能否获取盘符。。DELPHI 可能函数能解决吗

解决方案 »

  1.   

    呵呵 给你个地址 
    http://bbs.txwb.com/read-htm-tid-248479.html
      

  2.   

    这两个不对啊。这个函数。是要先通过盘符然后取得GUID。来改盘符的。试过了。;。
      

  3.   

    unit uMain;interfaceuses
      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;
    beginif 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;
    end.
    这段代码,一运行就报错,不知,你呢如何?