none
Auslesen der Registry: Trusted Locations

    Frage

  • Hallo zusammen

    Ich versuche, aus der Registry die Trusted locations auszulesen, um zu verifizieren, dass ein bestimmter Pfad schon vorhanden ist oder sonst hinzugefügt wird.

    Ich mache das mit dem folgenden Code:

    Public Function RegKeyRead(i_RegKey As String) As String
        Dim myWS As Object
    
        On Error Resume Next
        'access Windows scripting
        Set myWS = CreateObject("WScript.Shell")
        'read key from registry
        RegKeyRead = myWS.RegRead(i_RegKey)
        Set myWS = Nothing
    End Function

    Als String übergebe ich 'HKEY_CURRENT_USER\Software\Microsoft\Office\14.0\Access\Security\Trusted Locations\Location0\Path', wobei die Zahl hinter Location 0, 1, 2 etc. ist, je nach dem, wieviele Locations vorhanden sind. Ich durchlaufe alle Locations in einer Schleife. Das funktioniert auch.

    Das Problem dabei: die Funktion oben gibt immer den Pfad der Location0 zurück!? Das verstehe ich nicht. Kann mir jemand weiterhelfen?


    Danke und Gruss Thomas


    • Bearbeitet Alphawolfi Mittwoch, 19. November 2014 09:21
    Mittwoch, 19. November 2014 09:19

Antworten

  • Hier ist ein anderer Ansatz, um die Trusted Locations auszulesen. Wichtig dabei ist, dass diese nicht zwingend "Location0", "Location1" etc. heissen müssen; sie können irgend eine Namen haben!

    Matthias Kläy, Kläy Computing AG

    Public Sub ListTrustedLocations()
    ' Based on http://www.devhut.net/2010/06/23/vbscript-createset-trusted-location-using-vbscript/
    
    Const HKEY_CURRENT_USER As Long = &H80000001
    
    Dim oRegistry          As Object
    Dim strPath            As String ' Path to set as a Trusted Location
    Dim strDescription     As String ' Description of the Trusted Location
    Dim strDate            As String ' Date in Trusted Location
    
    Dim strParentKey  As String      ' HKCU\Software\Microsoft\Office\15.0\Access\Security\Trusted Locations
    Dim avarLocations As Variant     ' Locations under parent key
    Dim varLocation   As Variant
    
    Dim strVersion As String         ' Office version used in Parent key
    
    strVersion = SysCmd(acSysCmdAccessVer)
    strParentKey = "Software\Microsoft\Office\" & strVersion & "\Access\Security\Trusted Locations"
    
    Set oRegistry = GetObject("winmgmts:\\.\root\default:StdRegProv")
    
       ' Locations einlesen
       Call oRegistry.EnumKey(HKEY_CURRENT_USER, strParentKey, avarLocations) ' Returns variant array/String of child keys
       For Each varLocation In avarLocations
           strPath = "<nicht vorhanden>"
           strDescription = "<nicht vorhanden>"
           strDate = "<nicht vorhanden>"
           On Error Resume Next
           Call oRegistry.GetStringValue(HKEY_CURRENT_USER, strParentKey & "\" & varLocation, "Path", strPath)
           Call oRegistry.GetStringValue(HKEY_CURRENT_USER, strParentKey & "\" & varLocation, "Description", strDescription)
           Call oRegistry.GetStringValue(HKEY_CURRENT_USER, strParentKey & "\" & varLocation, "Date", strDate)
           On Error GoTo 0
           Debug.Print varLocation, strPath, strDescription, strDate
       Next
    End Sub


    • Bearbeitet mklaey Montag, 24. November 2014 10:53
    • Als Antwort markiert Alphawolfi Freitag, 28. November 2014 10:08
    Montag, 24. November 2014 10:52

Alle Antworten

  • Hier ist ein anderer Ansatz, um die Trusted Locations auszulesen. Wichtig dabei ist, dass diese nicht zwingend "Location0", "Location1" etc. heissen müssen; sie können irgend eine Namen haben!

    Matthias Kläy, Kläy Computing AG

    Public Sub ListTrustedLocations()
    ' Based on http://www.devhut.net/2010/06/23/vbscript-createset-trusted-location-using-vbscript/
    
    Const HKEY_CURRENT_USER As Long = &H80000001
    
    Dim oRegistry          As Object
    Dim strPath            As String ' Path to set as a Trusted Location
    Dim strDescription     As String ' Description of the Trusted Location
    Dim strDate            As String ' Date in Trusted Location
    
    Dim strParentKey  As String      ' HKCU\Software\Microsoft\Office\15.0\Access\Security\Trusted Locations
    Dim avarLocations As Variant     ' Locations under parent key
    Dim varLocation   As Variant
    
    Dim strVersion As String         ' Office version used in Parent key
    
    strVersion = SysCmd(acSysCmdAccessVer)
    strParentKey = "Software\Microsoft\Office\" & strVersion & "\Access\Security\Trusted Locations"
    
    Set oRegistry = GetObject("winmgmts:\\.\root\default:StdRegProv")
    
       ' Locations einlesen
       Call oRegistry.EnumKey(HKEY_CURRENT_USER, strParentKey, avarLocations) ' Returns variant array/String of child keys
       For Each varLocation In avarLocations
           strPath = "<nicht vorhanden>"
           strDescription = "<nicht vorhanden>"
           strDate = "<nicht vorhanden>"
           On Error Resume Next
           Call oRegistry.GetStringValue(HKEY_CURRENT_USER, strParentKey & "\" & varLocation, "Path", strPath)
           Call oRegistry.GetStringValue(HKEY_CURRENT_USER, strParentKey & "\" & varLocation, "Description", strDescription)
           Call oRegistry.GetStringValue(HKEY_CURRENT_USER, strParentKey & "\" & varLocation, "Date", strDate)
           On Error GoTo 0
           Debug.Print varLocation, strPath, strDescription, strDate
       Next
    End Sub


    • Bearbeitet mklaey Montag, 24. November 2014 10:53
    • Als Antwort markiert Alphawolfi Freitag, 28. November 2014 10:08
    Montag, 24. November 2014 10:52
  • Vielen Dank für Deinen Code. Er funktioniert.


    Danke und Gruss Thomas

    Freitag, 28. November 2014 10:08