用GetTempPath获取路径
获取出来是这样的C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp\
我想得到这样的
C:\Documents and Settings\Administrator\Local Settings\Temp
如何转换呢

解决方案 »

  1.   

    需要引用ShlObj,代码如下
    procedure TForm1.Button1Click(Sender: TObject);
    var
      sFolder: IShellFolder;
      pIDList: PITEMIDLIST;
      fullPath: WideString;
      Len: integer;
      buffer: array [0 .. MAX_PATH] of Char;
      pchEaten, Attributes: ULONG;
    begin
      Len := GetTempPathW(0, nil);
      SetLength(fullPath, Len);
      GetTempPathW(Len, @fullPath[1]);
      SHGetDesktopFolder(sFolder);
      sFolder.ParseDisplayName(0, nil, @fullPath[1], pchEaten, pIDList, Attributes);
      SHGetPathFromIDList(pIDList, buffer);
      ShowMessage(buffer);
    end;