nahemoth 10 Geschrieben 9. Juni 2011 Melden Teilen Geschrieben 9. Juni 2011 Hallo, ich weiss nicht, ob ich in diesem Unterforum richtig bin, wenn nicht, bitte einfach verschieben. Ich versuche in VB/VBA den Pfad zum Windows-Verzeichnis auf dem Homelaufwerk auszulesen. Mein Versuch war: Private Function GetWindowsDirectory(ByVal lpBuffer As Text.StringBuilder, _ ByVal uSize As UInteger) As UInteger End Function Public Function GetWindowsDirectory() As String Dim lLen As Integer Dim lBuffer As New Text.StringBuilder(260) lLen = CInt(GetWindowsDirectory(lBuffer, _ CUInt(lBuffer.Capacity))) MsgBox(lBuffer.ToString(0, lLen)) Return lBuffer.ToString(0, lLen) End Function aber GetWindowsDirectory gibt mir immer einen lehren String zurück. Kann mir hier jemand weiterhelfen? Vielen Dank! Zitieren Link zu diesem Kommentar
Dukel 454 Geschrieben 9. Juni 2011 Melden Teilen Geschrieben 9. Juni 2011 Kann man mit VB(A) Environment Variablen auslesen? Wenn ja frage "SystemRoot" ab. Zitieren Link zu diesem Kommentar
nahemoth 10 Geschrieben 9. Juni 2011 Autor Melden Teilen Geschrieben 9. Juni 2011 ja, kann man, ich habe es gerade über die beiden variablen HOMEDRIVE und HOMEPATH gelöst, wobei ich hier nicht weiss, ob dies immer korrekt ist. gibt SystemRoot das Windows-Verzeichnis auf H:\ aus? Zitieren Link zu diesem Kommentar
Dukel 454 Geschrieben 9. Juni 2011 Melden Teilen Geschrieben 9. Juni 2011 Wenn Windows auf H: installiert ist, ja. Gib in der CMD "set" ein, dann siehst du alle Variablen. Zitieren Link zu diesem Kommentar
nahemoth 10 Geschrieben 9. Juni 2011 Autor Melden Teilen Geschrieben 9. Juni 2011 Ahm, installiert doch keiner Windows nach H, es geht um das HomeLaufwerk des Users, eigentlich gehts darum, wo das Windows-Verzeichnis liegt, das Verwendet wird. Zitieren Link zu diesem Kommentar
Dukel 454 Geschrieben 9. Juni 2011 Melden Teilen Geschrieben 9. Juni 2011 Was nun? Windows Verzeichnis oder Homelaufwerk? Homeverzeichnis gibt mit der Variable "HOMEPATH" oder "USERPROFILE". Zitieren Link zu diesem Kommentar
nahemoth 10 Geschrieben 9. Juni 2011 Autor Melden Teilen Geschrieben 9. Juni 2011 ja, auf dem Homelaufwerk gibt es einen Windows-Ordner, in dem Benutzerspeziefische Programmdateien gepackt werden. Den brauch ich. Zitieren Link zu diesem Kommentar
Dukel 454 Geschrieben 9. Juni 2011 Melden Teilen Geschrieben 9. Juni 2011 Ich sehe bei mir keinen. Aber dann kannst du "HOMEPATH" und Windows zusammenbauen. Zitieren Link zu diesem Kommentar
Sunny61 806 Geschrieben 10. Juni 2011 Melden Teilen Geschrieben 10. Juni 2011 Ich weiß nicht mehr woher ich das Modul habe, aber es tut was es soll: Option Explicit ' Ordner-Auflistung Public Enum SpecialFolderIDs sfidDESKTOP = &H0 ' Desktop sfidNTERNET = &H1 ' Internet Explorer (icon on desktop) sfidPROGRAMS = &H2 ' Start Menu\Programs sfidCONTROLS = &H3 ' My Computer\Control Panel sfidPRINTERS = &H4 ' My Computer\Printers sfidPERSONAL = &H5 ' My Documents sfidFAVORITES = &H6 ' \Favorites sfidSTARTUP = &H7 ' StartMenu\Programs\Startup sfidRECENT = &H8 ' \Recent sfidSENDTO = &H9 ' \SendTo sfidBITBUCKET = &HA ' \Recycle Bin sfidSTARTMENU = &HB ' \StartMenu sfidDESKTOPDIRECTORY = &H10 ' name>\Desktop sfidDRIVERS = &H11 ' My Computer sfidNETWORK = &H12 ' Network Neighborhood sfidNETHOOD = &H13 ' \nethood sfidFONTS = &H14 ' windows\fonts sfidTEMPLATES = &H15 sfidCOMMON_STARTMENU = &H16 ' All Users\StartMenu sfidCOMMON_PROGRAMS = &H17 ' AllUsers\Programs sfidCOMMON_STARTUP = &H18 ' AllUsers\Startup sfidCOMMON_DESKTOPDIRECTORY = &H19 ' AllUsers\Desktop sfidAPPDATA = &H1A ' name>\Application Data sfidPRINTHOOD = &H1B ' name>\PrintHood sfidLOCAL_APPDATA = &H1C ' name>\Local Settings\Applicaiton Data (non roaming) sfidALTSTARTUP = &H1D ' non localizedstartup sfidCOMMON_ALTSTARTUP = &H1E ' non localizedCommon startup sfidCOMMON_FAVORITES = &H1F sfidINTERNET_CACHE = &H20 sfidCOOKIES = &H21 sfidHISTORY = &H22 sfidCOMMON_APPDATA = &H23 ' AllUsers\Application Data sfidWINDOWS = &H24 ' GetWindowsDirectory() sfidSYSTEM = &H25 ' GetSystemDirectory() sfidPROGRAM_FILES = &H26 ' C:\Program Files sfidMYPICTURES = &H27 ' C:\Program Files\My Pictures sfidPROFILE = &H28 ' USERPROFILE sfidSYSTEMX86 = &H29 ' x86 system directory on RISC sfidPROGRAM_FILESX86 = &H2A ' x86 C:\Program Files on RISC sfidPROGRAM_FILES_COMMON = &H2B ' C:\Program Files\Common sfidPROGRAM_FILES_COMMONX86 = &H2C ' x86 Program Files\Common on RISC sfidCOMMON_TEMPLATES = &H2D ' All Users\Templates sfidCOMMON_DOCUMENTS = &H2E ' All Users\Documents sfidCOMMON_ADMINTOOLS = &H2F ' All Users\Start Menu\Programs\Administrative Tools sfidADMINTOOLS = &H30 ' \Start Menu\Programs\Administrative Tools sfidProgramFiles = &H10000 sfidCommonFiles = &H10001 End Enum Private Type SHITEMID cb As Long abID As Byte End Type Private Type ITEMIDLIST mkid As SHITEMID End Type Private Declare Function SHGetSpecialFolderLocation Lib "shell32.dll" ( _ ByVal hwndOwner As Long, _ ByVal nFolder As Long, _ pidl As ITEMIDLIST) As Long Private Declare Function SHGetPathFromIDList Lib "shell32.dll" _ Alias "SHGetPathFromIDListA" ( _ ByVal pidl As Long, _ ByVal pszPath As String) As Long ' Standard Systemordner ermitteln Public Function GetSpecialFolder(CSIDL As _ SpecialFolderIDs) As String Dim lResult As Long Dim IDL As ITEMIDLIST Dim sPath As String lResult = SHGetSpecialFolderLocation(100, CSIDL, IDL) If lResult = 0 Then sPath = Space$(512) lResult = SHGetPathFromIDList(ByVal IDL.mkid.cb, _ ByVal sPath) GetSpecialFolder = Left$(sPath, InStr(sPath, _ Chr$(0)) - 1) End If End Function Aufruf: Dim pfadEigeneDateien as String pfadEigeneDateien = GetSpecialFolder(sfidPERSONAL) Zitieren Link zu diesem Kommentar
blub 115 Geschrieben 10. Juni 2011 Melden Teilen Geschrieben 10. Juni 2011 Hallo, In VB gehts z.B. so: s=Environment.GetEnvironmentVariable("windir") blub Zitieren Link zu diesem Kommentar
Empfohlene Beiträge
Schreibe einen Kommentar
Du kannst jetzt antworten und Dich später registrieren. Falls Du bereits ein Mitglied bist, logge Dich jetzt ein.