Dir-Funktion sperrt Zugriff auf Zugriffsrechte
18.02.2008 17:47:53
Nepumuk
ich hab gerade zwei Stunden mit dem WMI-Objekt gekämpft (natürlich ging ich als Sieger hervor).
Mich würde nur interessieren, ob das auf euren Rechnern auch so ist. Folgender Fall:
Beim initialisieren einer Mappe frage ich irgendwo im Code mit der Dir-Funktion ab, ob eine bestimmte Datei existiert.
Die Mappe bietet unter anderen die Möglichkeit für verschiedene Projekttypen verschiedene Ordner anzugeben. Da diese Ordner aber nicht allgemein freigegeben sind, prüfe ich den Freigabestatus ab. Die ersten Versuche außerhalb der Mappe lieferten einwandfreie Rückgabewerte. Nur nach dem Einbau der Funktion bekam ich eine Fehlermeldung "Unzulässige Verwendung von Null". Ich hab wie schon geschrieben 2 Stunden gesuch bis ich hinter die Dir-Funktion kam. Mit folgenden kleinen Codebeispiel könnt ihr das testen:
' **********************************************************************
' Modul: Modul1 Typ: Allgemeines Modul
' **********************************************************************
Option Explicit
Public Sub Test13()
Dir$ "D:\Eigene Dateien\Ausdruck.pdf" 'erst mit dir auf irgendeine datei zugreifen
Call Test13a("D:\Eigene Dateien") 'dann zugriffsrechte für diesen ordner prüfen
End Sub
Public Sub Test13a(strFolder As String)
Dim objWMI As Object, objItem As Object
strFolder = Replace(strFolder, "\", "\\")
' Dir$ "" 'wenn ich den ausführe, dann geht's. wenn nicht, dann bekommt AccessMask keinen wert
Set objWMI = GetObject("winmgmts:\\.\root\cimv2"). _
ExecQuery("Select * from Win32_Directory Where Name = '" & strFolder & "'")
For Each objItem In objWMI
MsgBox objItem.AccessMask
Next
End Sub
' Modul: Modul1 Typ: Allgemeines Modul
' **********************************************************************
Option Explicit
Public Sub Test13()
Dir$ "D:\Eigene Dateien\Ausdruck.pdf" 'erst mit dir auf irgendeine datei zugreifen
Call Test13a("D:\Eigene Dateien") 'dann zugriffsrechte für diesen ordner prüfen
End Sub
Public Sub Test13a(strFolder As String)
Dim objWMI As Object, objItem As Object
strFolder = Replace(strFolder, "\", "\\")
' Dir$ "" 'wenn ich den ausführe, dann geht's. wenn nicht, dann bekommt AccessMask keinen wert
Set objWMI = GetObject("winmgmts:\\.\root\cimv2"). _
ExecQuery("Select * from Win32_Directory Where Name = '" & strFolder & "'")
For Each objItem In objWMI
MsgBox objItem.AccessMask
Next
End Sub
Vielen Dank
Nepumuk