callback
Goto Top

Ersteller einer Datei oder eines Ordners auslesen Visual Basic

Hallo,

Zuerst mal mein Problem,

Auf einem Netzlaufwerk liegen sehr viele ordner, unterordner, und verschiedene Dateien (.doc,docx,xls,pdf,txt,csv......)
Nun versuche ich irgendwie ein Programm zu schreiben, dass am anfang eine Eingabemaske öffnet, wo man den Pfad zu einem Ordner angibt (soweit ja kein Problem).
Und Nun will ich, dass das Programm aus diesem Ordner und aus allen Unterordnern alle Dateien, egal was für eine Datei, mir auflistet, mit exaktem Pfad und dem Ersteller dieser Datei.

Ich habe das ganze schon mal in batch versucht, allerdings zeigt mir "dir /q" nicht den ersteller einer Datei, sondern nur den letzten der diese Datei bearbeitet hat.

Und da ich dass ganze für alle beliebigen ordner verwenden will, und es auch benutzerfreundlich gestalten will, versuche ich dass ganze nun in Visual Basic.

Danke für Euer HIlfe

CALLBACK

Edit:

Sorry hab ich vergessen:

BS: Win Xp Pro SP3

Content-ID: 140785

Url: https://administrator.de/contentid/140785

Ausgedruckt am: 22.11.2024 um 05:11 Uhr

ChrFriedel
ChrFriedel 16.04.2010 um 11:23:03 Uhr
Goto Top
Hallo Callback,

also ich hab da gerade mal ein wenig gespielt. Im Windows7 Explorer kann man sich ja den Ersteller anzeigen lassen. Bei Word und Excel ist das auch problemlos machbar. Wobei allerdings der Ersteller erst angezeigt wird wenn ich die mit Rechtsklick -> neues Worddokument erstellte Datei einmal öffne und speichere.
Bei *.txt hab ich es aber absolut nicht hinbekommen mir von Windows anzeigen zu lassen wer diese Datei erstellt hat. Deswegen vermute ich jetzt einfach mal das der Ersteller nicht von Windows gespeichert wird sondern höchstens von einer Anwendung wie eben z.B Word und Excel. Ich lasse mich da aber gerne eines Besseren belehren.

grüße
callback
callback 16.04.2010 um 11:32:47 Uhr
Goto Top
also unter xp ist es möglich den User anzuzeigen, der eine .txt datei zuletzt bearbeitet hat, dass geht über den cmd befehl "dir /q", allerdings zeigt es mir hier nicht den ersteller sondern nur den User an, der die Datei zuletzt bearbeitet hat. Über rechtsklick funktioniert dies bei txt dateien wirklich nicht, da diese rein in ASCII Code geschrieben sind, hier ist der ersteller bzw. bearbeiter im NTFS Dateiverzeichnis gespeichert.

Danke für deine Hilfe, allerdings suche ich einen Weg dies zu automatiesieren, da des ein sehr Großer Ordner ist, ich sags mal so als ich mir aus einem der zehn unterordner die verzeichnisstruktur auslessen lies, (nur Unterordner, keine Dateien) was ein excel Sheet fast voll, Sprich so um die 50000 Unterordner, und der Ordner war noch relativ klein, also wäre es von Hand ziemlich viel arbeit.

Ich habe in der zwischenzeit nochmal was in VBS gefunden:
set shell = CreateObject("Shell.Application")  

set folder = shell.NameSpace("D:\")  
set folderitems = folder.items

fmtid = "{9B174B34-40FF-11D2-A27E-00C04FC30871}"  

if folderitems.Count>0 then
   for each folderitem in folderitems
      besitzer = (folderitem.ExtendedProperty(fmtid & ",4"))  
      list = list & folderitem.name & _
         ": Besitzer ist " & besitzer & vbCr  
   next
end if

MsgBox list, vbInformation
Allerdings steht hier bei mir am schluss kein User dran, sondern nur "/name Ordner/: Besitzer ist:", aber danach kein User, vlt. kann mir hier jemand weiterhelfen.

MfG
CALLBACK


[Edit Biber] Codetags nachgetragen. [/Edit]
ChrFriedel
ChrFriedel 16.04.2010 um 12:41:24 Uhr
Goto Top
Ich hab dich schon verstanden face-smile Und genau das ist ja das Problem das ich gemeint habe. Ich glaube das Windows den Ersteller nicht selbst im Dateiverzeichnis mit speichert sondern das das höchstens Anwendungen beim speichern eines Dokumentes machen... und du somit chancenlos bist bei den *.txt da diese Informationen eben einfach nicht vorliegen...

Stell mal im WinExplorer ein das er dir den Ersteller eines Dokuments anzeigt. Dann leg mit rechter Maustaste ein neues Worddokument an. Du wirst sehen das der Ersteller leer bleibt. Erst wenn du diese neue Datei mit Word öffnest und speicherst erscheint dein Username unter Ersteller.... deswegen meine Vermutung das Windows einfach egal ist wer die Datei anlegt...


Aber wie gesagt... keine Garantie
callback
callback 21.04.2010 um 14:06:05 Uhr
Goto Top
schade, dass das nicht geht aber ich hab mir jetzt ein batchfile gebasstelt, das mir die Besitzer aller Dateien eines Ordners in eine .txt datei auflistet
Code:
echo off
cls
set /P pfadtorun=Bitte den Pfad zum Ordner angeben, der gescannt werden soll:
set /P pfadtolog=Bitte den Pfad zur logdatei angeben:
dir "%pfadtorun%" /A:-D /S /Q > "%pfadtolog%"  
exit
MfG

CALLBACK


^[Edit Biber] Codetags. [/Edit]