Die Community zu .NET und Classic VB.
Menü

VB 5/6-Tipp 0691: Besitzer einer Datei/eines Ordners auf einem NTFS Medium mit WMI auslesen

 von 

Beschreibung 

Ein mit NTFS formatiertes Speichermedium erfasst für jede Datei und jeden Ordner den Namen des Benutzer Kontos mit dem die Datei/Ordner erstellt wurde.
Auslesen kann man diese Information z.B. mit dem Parameter /q des Konsolen-Kommandos Dir.
Dieser Tipp zeigt wie man mittels WMI diesen 'Besitzer' zur Anzeige bringen kann.

Schwierigkeitsgrad:

Schwierigkeitsgrad 2

Verwendete API-Aufrufe:

keine

Download:

Download des Beispielprojektes [2,33 KB]

'Dieser Quellcode stammt von http://www.activevb.de
'und kann frei verwendet werden. Für eventuelle Schäden
'wird nicht gehaftet.

'Um Fehler oder Fragen zu klären, nutzen Sie bitte unser Forum.
'Ansonsten viel Spaß und Erfolg mit diesem Source!

'------------- Anfang Projektdatei Projekt1.vbp -------------
'--------- Anfang Formular "Form1" alias Form1.frm  ---------
' Steuerelement: Schaltfläche "Command1"
' Steuerelement: Textfeld "Text1"
' Steuerelement: Beschriftungsfeld "Label1"

Option Explicit

Private Sub Command1_Click()
    MsgBox GetFileOwner(Text1)
End Sub

Private Function GetFileOwner(ByVal FullFileName As String) As String
    Dim objSecurity As Object, objSecurityDescriptor As Object
    ' eine alternative Deklaration wäre: as SWbemObject, dazu muss
    ' allerdings ein Verweis auf die Microsoft WMI Scripting Library
    ' gesetzt werden.

    ' alle Backslash im Pfad müssen verdoppelt werden:
    FullFileName = Replace(FullFileName, "\", "\\")
    
    ' wir holen uns die entsprechende Instanz des
    ' Win32_LogicalFileSecuritySetting Objekts:
    Set objSecurity = GetObject( _
        "winmgmts:\\.\root\cimv2:" & _
        "Win32_LogicalFileSecuritySetting.Path='" & _
        FullFileName & "'")
    
    ' holen deren Security Deskriptor:
    objSecurity.GetSecurityDescriptor objSecurityDescriptor
    
    ' und geben den Namen zurück:
    GetFileOwner = objSecurityDescriptor.Owner.Name
End Function

Private Sub Form_Load()

End Sub
'---------- Ende Formular "Form1" alias Form1.frm  ----------
'-------------- Ende Projektdatei Projekt1.vbp --------------

Tipp-Kompatibilität:

Windows/VB-VersionWin32sWin95Win98WinMEWinNT4Win2000WinXP
VB4
VB5
VB6

Hat dieser Tipp auf Ihrem Betriebsystem und mit Ihrer VB-Version funktioniert?

Ja, funktioniert!

Nein, funktioniert nicht bei mir!

VB-Version:

Windows-Version:

Ihre Meinung  

Falls Sie Fragen zu diesem Artikel haben oder Ihre Erfahrung mit anderen Nutzern austauschen möchten, dann teilen Sie uns diese bitte in einem der unten vorhandenen Themen oder über einen neuen Beitrag mit. Hierzu können sie einfach einen Beitrag in einem zum Thema passenden Forum anlegen, welcher automatisch mit dieser Seite verknüpft wird.

Archivierte Nutzerkommentare 

Klicken Sie diesen Text an, wenn Sie die 3 archivierten Kommentare ansehen möchten.
Diese stammen noch von der Zeit, als es noch keine direkte Forenunterstützung für Fragen und Kommentare zu einzelnen Artikeln gab.
Aus Gründen der Vollständigkeit können Sie sich die ausgeblendeten Kommentare zu diesem Artikel aber gerne weiterhin ansehen.

Kommentar von Manfred Zahn am 04.08.2009 um 18:57

das programm hat auf alle direkte Server funktioniert (Festplatte) aber nicht, wenn die "feil´s" in einer Datei die auf LAN (Internet) Server liegen.

Kommentar von Roger am 01.06.2006 um 15:25

Wenn ein Ordner erstellt wird, dann wird nicht nur der Name hinterlegt, sondern es werden auch Rechte vergeben. Defaultmässig ist ein solcher Ordner persönlich ("do not share this Folder").
Wie kann man "share this folder" setzen und wie setzt man danach die Rechte ("Permissions" --> "Full Control", "Change" und "Read")?

Kommentar von Roger am 01.06.2006 um 15:01

Kann man diesen Namen auch manipulieren? Wenn ja, wie?