例如现在我的操作系统是windows 2000,安装在D盘,请问在程序里怎么获取d:\winnt\system32这个目录,如果是2003呢,怎么知道获取C:\WINDOWS\system32呢?

解决方案 »

  1.   

    MsgBox Environ("windir") & "\System32\"
      

  2.   

    Private Sub Form_Load()
    Dim buf As String, msg As String, idx As Integer
    idx = 1
    Do
        buf = Environ(idx)
        msg = msg & buf & vbCrLf
        idx = idx + 1
    Loop Until buf = ""MsgBox msgEnd Sub
    -----------------------
    Private Declare Function GetSystemDirectory Lib "kernel32" Alias "GetSystemDirectoryA" (ByVal lpBuffer As String, ByVal nSize As Long) As Long
    Const MAX_LEN = 200
    Private Sub Command1_Click()
    Dim sTmp As String * MAX_LEN
    Dim nLength As Long
    Dim pidl As Long
    Length = GetSystemDirectory(sTmp, MAX_LEN)
    Print Left(sTmp, Length) & vbCrLf
    End Sub
      

  3.   

    原;http://vip.6to23.com/xiaoyaogu/vb/vb1/001.htm
    如何用VB获得Windows各类系统目录关健字:VB、Windows路径、系统路径、API
    作者:许浩亮 Email:[email protected]
      现在有很多关于如何用VB获得Windows目录的文章,但大都只讲到如何获得Windows目录和System目录,有时候我们却需要获得像"我的文档"这样的目录("我的文档"的路径并不是固定的,可以由自己设定,也有可能因为系统的安装路径不同而不同),那又该如何处理呢?下面我们来具体谈谈如何用VB获得这种路径。
      先向大家介绍两个API函数,这两个函数分别是SHGetSpecialFolderLocation和SHGetPathFromIDList,这就是我们用来获得各种路径的武器。^………………是不是太长了
    还是用我的:
    i=1
    While Environ(i) <> ""
    msgbox vbCrLf & i & (Environ(i))
    i = i + 1
    Wend
    应用:
    窗体上有一个text1.text,并设置
    属性设置:
    Text1.MultiLine = True
    Text1.ScrollBars = 3
    form1代码Dim zheight
    Private Sub Form_Load()
    On Error Resume Next
    zheight = 6150
    Text1.Text = getsys
    End Sub
    Private Sub Form_Resize()
    On Error Resume Next
    Text1.Width = Me.Width
    Me.Height = zheight
    End Sub
    Function getsys()
    Dim i, zstr
    i = 1
    zstr = "系统参数如下,可以用ENVIRON(""TEMP"")等得到" & vbCrLf
    While Environ(i) <> ""
    zstr = zstr & vbCrLf & "ENVIRON(""" & Left(Environ(i), InStr(Environ(i), "=") - 1) & """)=" & Right(Environ(i), Len(Environ(i)) - InStr(Environ(i), "="))
    'Right(Environ(i), InStrRev(Environ(i), "="))
    i = i + 1
    Wend
    getsys = zstr
    End FunctionEnviron(0)代表系统的一个参数,如
    ENVIRON(27)就是等于"windir=e:\windows"我的下面的话就是分解成e:\windows
    试试以下代码i=1
    While Environ(i) <> ""
    msgbox vbCrLf & i & (Environ(i))
    i = i + 1
    Wend
      

  4.   

    可以通过 Environ("环境变量名")的方法得到系统的环境变量.
    比方:Environ("windir")为windows安装文件夹.Environ("TEMP"),临时文件夹
    Environ("PROCESSOR_IDENTIFIER"),处理器的信息
    等等.
      

  5.   

    这样也行:
    Option Explicit
    Private Declare Function SHGetSpecialFolderLocation Lib "Shell32" (ByVal hwndOwner As Long, ByVal nFolder As Integer, ppidl As Long) As Long
    Private Declare Function SHGetPathFromIDList Lib "Shell32" Alias "SHGetPathFromIDListA" (ByVal pidl As Long, ByVal szPath As String) As Long
    Const MAX_LEN = 260
    Const ID_System = 37Private Sub Form_Load()
        Dim sTmp As String * MAX_LEN  '存放结果的固定长度的字符串
        Dim pidl As Long  '某特殊目录在特殊目录列表中的位置
        '*************************获取系统目录路径**********************************
        SHGetSpecialFolderLocation 0, ID_System, pidl
        SHGetPathFromIDList pidl, sTmp
        MsgBox Left(sTmp, InStr(sTmp, Chr(0)) - 1)
    End Sub
    还有一种办法是访问注册表,这样的代码很多,我就不罗嗦了
      

  6.   

    用fso对象也行
    Private Sub Command1_Click()
    Dim fso
    Set fso = CreateObject("scripting.filesystemobject")
    MsgBox fso.GetSpecialFolder(1)
    End Sub其中的GetSpecialFolder方法 
    返回指定的特殊文件夹。
    语法
    object.GetSpecialFolder(folderspec)
    GetSpecialFolder 方法语法有如下几部分:
    部分 描述 
    object 必需的。始终是一个 FileSystemObject 的名字。 
    folderspec 必需的。要返回的特殊文件夹的名字。可以是在设置值部分中列出的任何常数。 
    设置值
    folderspec 参数可为任何的下列值:
    常数 值 描述 
    WindowsFolder 0 Windows 文件夹,包含由 Windows 操作系统安装的文件。 
    SystemFolder 1 系统文件夹,包含库、字体、设备驱动程序。 
    TemporaryFolder 2 Temp 文件夹,用于存储临时文件。它的路径在 TMP 环境变量中。 
      

  7.   

    我靠,一群高手,根本不给我施展才华的机会.不行,就算灌水也要顶.先
    Declare Function GetWindowsDirectory Lib "Kernel32.dll" Alias "GetWindowsDirectoryA" (ByVal lpBuffer As String, ByVal nSize As Integer) As Long

    Function MyGetWindowsDir() As String    Dim Temp As String, X As Integer
    '--------------------------------------------------
    ' Calls the windows API to get the windows directory
    '--------------------------------------------------
        Temp$ = String$(145, 0)              ' Size Buffer
        X = GetWindowsDirectory(Temp$, 145)   ' Make API Call
        Temp$ = MyLeftB$(Temp$, X)             ' Trim Buffer    If Right$(Temp$, 1) <> "\" Then      ' Add \ if necessary
            MyGetWindowsDir$ = Temp$ + "\"
        Else
            MyGetWindowsDir$ = Temp$
        End IfEnd Function
      

  8.   

    Private Declare Function GetSystemDirectory Lib "kernel32" Alias "GetSystemDirectoryA" (ByVal lpBuffer As String, ByVal nSize As Long) As Long
      

  9.   

    Public Declare Function GetWindowsDirectory Lib "kernel32" Alias "GetWindowsDirectoryA" (ByVal lpBuffer As String, ByVal nSize As Long) As LongPublic Function GetwinDir() As String
    Dim Buffer As String * 255
    Dim rtn As Long
    Dim WinPath As String            rtn = GetWindowsDirectory(Buffer, Len(Buffer))
                WinPath = Left(Buffer, rtn)
                GetwinDir = WinPath
                
    End Function
    函数返回当前操作系统目录
      

  10.   

    别人说过的,我就不说了。
    我只说一点:用API可以取得所有的系统路径,你不妨在网上搜索一下“API”函数。
      

  11.   

    Private Sub Command1_Click()
    Dim objFSO
    Set objFSO = CreateObject("Scripting.FileSystemObject")
    MsgBox objFSO.GetSpecialFolder(1)End Sub