如何获取系统的临时目录路径?对不同的系统,temp目录是不同的,
出了从注册表获取以外有没有简单的方法实现??

解决方案 »

  1.   

    Option Explicit
    Private Declare Function GetTempPath Lib "kernel32" Alias "GetTempPathA" (ByVal nBufferLength As Long, ByVal lpBuffer As String) As Long
    Private Function GetTEMPfolder() As String
        Dim Str  As String * 255
        GetTempPath Len(Str) + 1, Str
        GetTEMPfolder = Left$(Str, InStr(Str, Chr$(0)) - 2)
     End FunctionPrivate Sub Command1_Click()
    MsgBox GetTEMPfolder
    End Sub
      

  2.   

    显示的是C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp,但是当我往这个目录下新建一文件时却不能实现,
    正确显示应该是C:\Documents and Settings\Administrator\Local Settings\Temp??
      

  3.   

    ::GetTempPath(sizeof(buf),buf);
    我试过这个函数可以的。
      

  4.   

    再试试这个:
    MsgBox Environ("WINDIR") & "\temp"
      

  5.   

    应该是楼上的楼上:)
    楼上的我试了,是
    C:\WINNT\temp
    也是一个temp目录,反正我只是需要暂时保存一个文件,无所谓了!
    就用这个吧
      

  6.   

    to:tcly
    我还是想问清楚你的那个方法具体怎么实现的?
    3x
      

  7.   


    Private Sub WinntPathsub()
    Dim Filesys As New FileSystemObject
    Dim File As File
    WinntPath = Filesys.GetSpecialFolder(0)
    WinntName = Left(Filesys.GetSpecialFolder(0), 1)
    WinntTemp = Filesys.GetSpecialFolder(2)
    End Sub
      

  8.   

    to :haohaohappy
    Dim Filesys As New FileSystemObject   用户定义类型未定义??
      

  9.   

    GetTempPath取得的是一个DOS名称,所以要建立文件也要按照8.3原则建立。
      

  10.   

    那就是说在window下这个名称是无效的?刚刚发现使用 Environ("TEMP") 也可实现
      

  11.   

    不是说在windows下是无效的,而是说,你在后面加的文件名,必须是按照8.3原则,即文件名不超过8个字符,扩展名不超过3个字符
      

  12.   

    //显示的是C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp,但是当我往这个目录下新建一文件时却不能实现,
    正确显示应该是C:\Documents and Settings\Administrator\Local Settings\Temp??你需要把短文件名转化为长文件名
      

  13.   

    刚写了一个:Option Explicit
    Private Declare Function GetLongPathName Lib "kernel32" Alias "GetLongPathNameA" (ByVal lpszShortPath As String, ByVal lpszLongPath As String, ByVal cchBuffer As Long) As Long
    Private Declare Function GetTempPath Lib "kernel32" Alias "GetTempPathA" (ByVal nBufferLength As Long, ByVal lpBuffer As String) As Long
    Sub GetTEMPfolder(Optional ByVal showlong As Boolean = True)
        
        Dim longname As String, shortname As String
        
        shortname = Space(256)
        GetTempPath Len(shortname), shortname
     
        longname = Space(1024)
        GetLongPathName shortname, longname, Len(longname)     MsgBox "Tempfolder : " & IIf(showlong = True, longname, shortname)
      
     End SubPrivate Sub Command1_Click()
     GetTEMPfolder '长文件名
     GetTEMPfolder False '短文件名
    End Sub
      

  14.   

    Dim FileSys As Object
    Set FileSys = CreateObject("Scripting.FileSystemObject")返回临时目录 = FileSys.GetSpecialFolder(2)返回的目录可能是短文件名,但是绝对不会妨碍使用的。