Autor
|
Thema: Besitzer einer Datei ermitteln (8593 mal gelesen)
|
Feyza Mitglied
Beiträge: 605 Registriert: 12.01.2004 AutoCAD Mechanical 2014 / Windows Win7 / HP-UX / Oracle 10 VB6 / Visual Studio:NET2005 / .NET 2010 - Vb.net / Windows Server 2012, ASP.net
|
erstellt am: 14. Apr. 2005 12:00 <-- editieren / zitieren --> Unities abgeben:
Hallöchen an Alle, ich muss bei Dateien, die bearbeitet werden, den Besitzer mit eintragen lassen. Wie kann man den Besitzer einer Datei ermitteln? Danke im voraus. Schöne Grüße Feyza : ) ------------------ Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
BloodyMess Mitglied Applicationingenieur
Beiträge: 604 Registriert: 06.06.2002 AutoCAD Map 3D 2005 (SP2 & SP1) / Win XP pro (SP1) & Win 2000 pro (SP4) AutoCAD Map 2000i / WinNT (SP6)
|
erstellt am: 14. Apr. 2005 15:05 <-- editieren / zitieren --> Unities abgeben: Nur für Feyza
|
Feyza Mitglied
Beiträge: 605 Registriert: 12.01.2004 AutoCAD Mechanical 2014 / Windows Win7 / HP-UX / Oracle 10 VB6 / Visual Studio:NET2005 / .NET 2010 - Vb.net / Windows Server 2012, ASP.net
|
erstellt am: 14. Apr. 2005 17:01 <-- editieren / zitieren --> Unities abgeben:
Hallo BloddyMess, es scheint so, das Excel VBA irgendwie eine andere Sprache spricht : ) Habe bei diesem Modul speziel auf Besitzer leider kein Hinweis gefunden. Kannst Du mir da vielleicht weiterhelfen?! Option Explicit '///////////////////////////////////////////////////////////////////////////// '// Retrieve Detailed Summary Information for a File '// Description: '// Uses the Shell's Application object to retrieve detailed '// summary information including Name, Size, Owner, and file attributes '// for all the files in a User selected folder. '// '// Requires DLL version shell32.dll version 4.71 or later '// Operating systems: '// Win2000, WinNT 4.0 with Internet Explorer 4.0, Win98, Win95 with Internet Explorer 4.0 '// '// Date: 6th June 2003 '// Tested: WinXP / Excel2000 '// By Ivan F Moala: http//www.XcelFiles.com '///////////////////////////////////////////////////////////////////////////// Dim ShName As String Dim objFolder As Object Dim sFullPath As String Dim blnCreateLink As Boolean Dim blnStatus As Boolean Dim objShell As Object Function ShellFolderName() As String Set objShell = CreateObject("Shell.Application") '// SYNTAX = Shell.BrowseForFolder (Hwnd, sTitle, iOptions [, vRootFolder]) Set objFolder = objShell.BrowseForFolder(0, "Please select a folder", 0, 0) If (Not objFolder Is Nothing) Then '// NB: If SpecFolder= 0 = Desktop then .... On Error Resume Next If IsError(objFolder.items.Item.Path) Then ShellFolderName = objFolder: GoTo Here On Error GoTo 0 ShellFolderName = objFolder.items.Item.Path sFullPath = objFolder.items.Item.Path Else MsgBox "File details ABORTED": End End If Here: ShName = CStr(objFolder) End Function Sub GetFolderFileDetails() Dim strDir As String Dim objFSO As Object Dim strFileName As Object Dim arrHeaders(14) Dim X As Double, i As Integer, Y As Integer Dim oldSb As Boolean oldSb = Application.DisplayStatusBar Application.DisplayStatusBar = True blnCreateLink = Range("CreateLink") blnStatus = Range("DStatus") strDir = ShellFolderName Set objFSO = CreateObject("Scripting.FileSystemObject") If strDir = "Desktop" Then Set objFolder = objShell.Namespace(0) Else Set objFolder = objShell.Namespace("" & strDir & "") End If '// Add New details sheet AddSheet ShName Application.DisplayStatusBar = True '// Initialise variable counter '// We will only get 15 Items Y = 0 For i = 0 To 14 arrHeaders(i) = objFolder.GetDetailsOf(objFolder.items, i) Cells(2, Y + 1) = arrHeaders(i) Y = Y + 1 Next '// Initialise variable counters X = 0: Y = 0 Application.ScreenUpdating = Not (blnStatus) For Each strFileName In objFolder.items For i = 0 To 14 If blnStatus Then Application.StatusBar = objFolder & ":" & strFileName & ":" & _ objFolder.GetDetailsOf(strFileName, i) If blnCreateLink Then Cells(X + 3, 1).Hyperlinks.Add Anchor:=Cells(X + 3, 1), _ Address:=sFullPath & "\" & strFileName If objFolder.GetDetailsOf(strFileName, 1) = "File Folder" Or _ objFolder.GetDetailsOf(strFileName, 2) = "File Folder" Then Range(Cells(X + 3, 1), Cells(X + 3, 15)).Font.ColorIndex = 3 End If Cells(X + 3, i + 1) = objFolder.GetDetailsOf(strFileName, i) Next X = X + 1 Next '// Format Frmt '// Inform User MsgBox "Completed....... " & objFolder.items.Count & " Files", vbInformation + vbSystemModal '// Clean-up Set objShell = Nothing Set objFolder = Nothing Set objFSO = Nothing With Application .ScreenUpdating = True .StatusBar = False .DisplayStatusBar = oldSb End With End Sub Sub Frmt() '// Format the sheet Dim Rg As Range With Range("A1") .Value = objFolder.items.Count & " Items in " & sFullPath 'objFolder .HorizontalAlignment = xlCenter End With Set Rg = Range(Range("A2"), Range("A2").End(xlToRight)) With Rg .Borders.LineStyle = xlDouble .HorizontalAlignment = xlCenter .VerticalAlignment = xlCenter .Font.FontStyle = "Bold" .Font.Size = 8 .Font.ColorIndex = 5 End With Range("B1").FormulaR1C1 = " RED = Directory" Columns("A ").Columns.AutoFit Set Rg = Nothing End Sub Sub AddSheet(Nm As String) '// Adds New Sheet On Error Resume Next Sheets.Add(after:=ActiveSheet).Name() = Nm If Err Then Err.Clear Range("B3").Select ActiveWindow.FreezePanes = True '// Place in New Book? If Range("NewBook") Then ActiveSheet.Move End Sub Danke Dir. Schönen Gruß Feyza : ) ------------------ Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
BloodyMess Mitglied Applicationingenieur
Beiträge: 604 Registriert: 06.06.2002 AutoCAD Map 3D 2005 (SP2 & SP1) / Win XP pro (SP1) & Win 2000 pro (SP4) AutoCAD Map 2000i / WinNT (SP6)
|
erstellt am: 14. Apr. 2005 18:44 <-- editieren / zitieren --> Unities abgeben: Nur für Feyza
Hallo Feyza, beim debuggen findet er mit 'objFolder.GetDetailsOf(objFolder.items, i)' die einzelnen Eigenschaften (Details) der Datei und schreibt diese in den Tabellenkopf. Dabei interessiert Dich aber nur, wenn Du den Besitzer haben möchtest --> 'objFolder.GetDetailsOf(objFolder.items, 8)' ... hier steht der Eigentümer (Owner) der Datei drinnen. Bisher wurden also nur die Überschriften geschrieben. Ab jetzt wird es interessant ... Er steigt in die ForSchleife ein und zappt wieder durch die ganzen Details, nun aber durch das Object, in dem sich das File befindet und prüft und macht ... am Ende schreibt er aber für das jeweilige Files die Details in die Tabelle mit --> 'objFolder.GetDetailsOf(strFileName, i)' .. wobei Dich nun aber nur wieder die '8' interessiert. Somit kannst Du Dir deinen Code zusammenbauen, den Du eigentlich brauchst ... also in vereinfachter Form sieht das dann so aus, was er macht, wenn Du das auf einen statischen Ordner setzt ... Code: Sub test()Dim strFileName As Object Dim strDir As String Dim objShell As Object strDir = "C:\Dokumente und Einstellungen\TadeusP\Eigene Dateien\Eigene Bilder" Set objShell = CreateObject("Shell.Application") Set objFolder = objShell.Namespace("" & strDir & "") For Each strFileName In objFolder.items Debug.Print objFolder.GetDetailsOf(strFileName, 8) Next strFileName End Sub
Ich weiss, das Ergebnis ist nicht zufriedenstellend, da er alle Dateien in dem Verzeichnis raussucht. Man könnte als jetzigen Workaround eine Abfrage für eine bestimmte Datei einbauen, aber ich versuche bis morgen mal eine bessere Lösung zu finden .. Sorry Gruss TP ------------------ Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
BloodyMess Mitglied Applicationingenieur
Beiträge: 604 Registriert: 06.06.2002 AutoCAD Map 3D 2005 (SP2 & SP1) / Win XP pro (SP1) & Win 2000 pro (SP4) AutoCAD Map 2000i / WinNT (SP6)
|
erstellt am: 14. Apr. 2005 19:22 <-- editieren / zitieren --> Unities abgeben: Nur für Feyza
Hallo Feyza, wollte eigentlich etwas anderes machen, aber es hat mir keine Ruhe gelassen ... Code: Sub test()Dim objShell As Object Dim objFSO As New FileSystemObject Dim filFile As File Set filFile = objFSO.GetFile("C:\Dokumente und Einstellungen\TadeusP\Eigene Dateien\Eigene Bilder\Beispiel.jpg") Set objShell = CreateObject("Shell.Application") Set objFolder = objShell.Namespace(filFile.Path) Debug.Print objFolder.GetDetailsOf(filFile.Path, 8) End Sub
Voraussetzung ist ein Verweis auf die 'Microsoft Scripting Runtime'. Viel Spass und Gruss TP ------------------ Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Feyza Mitglied
Beiträge: 605 Registriert: 12.01.2004 AutoCAD Mechanical 2014 / Windows Win7 / HP-UX / Oracle 10 VB6 / Visual Studio:NET2005 / .NET 2010 - Vb.net / Windows Server 2012, ASP.net
|
erstellt am: 20. Apr. 2005 09:01 <-- editieren / zitieren --> Unities abgeben:
|
BloodyMess Mitglied Applicationingenieur
Beiträge: 604 Registriert: 06.06.2002 AutoCAD Map 3D 2005 (SP2 & SP1) / Win XP pro (SP1) & Win 2000 pro (SP4) AutoCAD Map 2000i / WinNT (SP6)
|
erstellt am: 20. Apr. 2005 09:51 <-- editieren / zitieren --> Unities abgeben: Nur für Feyza
|
Feyza Mitglied
Beiträge: 605 Registriert: 12.01.2004 AutoCAD Mechanical 2014 / Windows Win7 / HP-UX / Oracle 10 VB6 / Visual Studio:NET2005 / .NET 2010 - Vb.net / Windows Server 2012, ASP.net
|
erstellt am: 20. Apr. 2005 10:24 <-- editieren / zitieren --> Unities abgeben:
Hallöchen BloodMess, VB erkennt das value nicht. Fehler beim Komplilieren Methode oder Mitgliedsdaten nicht gefunden. Muss man noch ein Verweis machen, wenn ja, welches : ) ?! Schönen Gruß Feyza : ) ------------------ Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
BloodyMess Mitglied Applicationingenieur
Beiträge: 604 Registriert: 06.06.2002 AutoCAD Map 3D 2005 (SP2 & SP1) / Win XP pro (SP1) & Win 2000 pro (SP4) AutoCAD Map 2000i / WinNT (SP6)
|
erstellt am: 20. Apr. 2005 10:37 <-- editieren / zitieren --> Unities abgeben: Nur für Feyza
Hi Feyza, für ein TextFeld muss man keinen Verweis setzen! Kann es sein, das es kein Textfeld ist? Vielleicht ein Bezeichnungsfeld? Dann muss es 'myForm.MyLabel.Caption = ...' heissen. Gruss TP ------------------ Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Feyza Mitglied
Beiträge: 605 Registriert: 12.01.2004 AutoCAD Mechanical 2014 / Windows Win7 / HP-UX / Oracle 10 VB6 / Visual Studio:NET2005 / .NET 2010 - Vb.net / Windows Server 2012, ASP.net
|
erstellt am: 20. Apr. 2005 11:24 <-- editieren / zitieren --> Unities abgeben:
Hallo BloodMess, habe dir den Testprogramm als Anhang beigelegt. Es ist ein Textfeld. Habe dies auch mit einer Bezeichnungsfeld versucht. Schaust Dir bitte an : ) Schönen Gruß Feyza : ) ------------------ Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
BloodyMess Mitglied Applicationingenieur
Beiträge: 604 Registriert: 06.06.2002 AutoCAD Map 3D 2005 (SP2 & SP1) / Win XP pro (SP1) & Win 2000 pro (SP4) AutoCAD Map 2000i / WinNT (SP6)
|
erstellt am: 20. Apr. 2005 12:07 <-- editieren / zitieren --> Unities abgeben: Nur für Feyza
Hi Feyza, mir ist wohl ein Fehler unterlaufen, weil auch ich nicht alles verstehe. Code: Dim objShell As Object Dim objFSO As New FileSystemObject Dim filFile As File Dim objFolder As Object Set filFile = objFSO.GetFile("C:\Temp\SXE_LOG.html") Set objShell = CreateObject("Shell.Application") Set objFolder = objShell.NameSpace(filFile.ParentFolder.Path)
Form1.Label1.Caption = objFolder.GetDetailsOf(filFile.Path, 8) Form1.Text1.Text = objFolder.GetDetailsOf(filFile.Path, 8)
probier es nochmal so ... Gruss TP ------------------ Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Feyza Mitglied
Beiträge: 605 Registriert: 12.01.2004 AutoCAD Mechanical 2014 / Windows Win7 / HP-UX / Oracle 10 VB6 / Visual Studio:NET2005 / .NET 2010 - Vb.net / Windows Server 2012, ASP.net
|
erstellt am: 20. Apr. 2005 12:21 <-- editieren / zitieren --> Unities abgeben:
Hallo BloodyMess, jetzt zeigt er mir den Text "Eigentümer", aber nicht den Namen des Users, dem die Datei gehört. Bei Eigenschaften-->Sicherheitseinstellungen-->Erweitert-->Besitzer Aktueller Besitzer dieses Elements hier steht ein Name drinnen, diese Angabe brauche ich : ) Weisst Du vielleicht dazu auch eine Lösung? Danke Dir : ) Feyza : )
------------------ Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
BloodyMess Mitglied Applicationingenieur
Beiträge: 604 Registriert: 06.06.2002 AutoCAD Map 3D 2005 (SP2 & SP1) / Win XP pro (SP1) & Win 2000 pro (SP4) AutoCAD Map 2000i / WinNT (SP6)
|
erstellt am: 20. Apr. 2005 13:20 <-- editieren / zitieren --> Unities abgeben: Nur für Feyza
Hallo Feyza, dann mach es erstmal wie oben beschrieben, über den Umweg, das Du nach der Datei abfragst. Mehr kann ich im Moment nicht tun. Stehe gerade auch auf dem Schlauch. Gruss TP ------------------ Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
BloodyMess Mitglied Applicationingenieur
Beiträge: 604 Registriert: 06.06.2002 AutoCAD Map 3D 2005 (SP2 & SP1) / Win XP pro (SP1) & Win 2000 pro (SP4) AutoCAD Map 2000i / WinNT (SP6)
|
erstellt am: 21. Apr. 2005 09:09 <-- editieren / zitieren --> Unities abgeben: Nur für Feyza
Hi Feyza, um das Thema wieder aufzurollen ... ... versuch mal folgendes ... Code: sub ttt() Dim objShell As IShellDispatch2 Dim objFSO As FileSystemObject Dim strDir As String Dim objFolder As Folder Dim objFolder2 As Folder2 Dim test As FolderItem2Set objFSO = CreateObject("Scripting.FileSystemObject") Set objFolder = objFSO.GetFolder("C:\") strDir = CStr(objFolder) Set objShell = CreateObject("Shell.Application") Set objFolder2 = objShell.Namespace("" & strDir & "") Set test = objFolder2.ParseName("test.txt") Debug.Print objFolder2.GetDetailsOf(test, 8) end sub
.... verweise auf 'Microsoft Scripting Runtime' und .... 'Microsoft Shell Controls and Automation' ... (..\system32\shell32.dll) .... als Ausgabe bekomme ich nun 'VORDEFINIERT\Administratoren' Das sollte es sein, was Du suchst ... denke ich .. oder? .. Gruss TP ------------------ Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Feyza Mitglied
Beiträge: 605 Registriert: 12.01.2004 AutoCAD Mechanical 2014 / Windows Win7 / HP-UX / Oracle 10 VB6 / Visual Studio:NET2005 / .NET 2010 - Vb.net / Windows Server 2012, ASP.net
|
erstellt am: 21. Apr. 2005 13:47 <-- editieren / zitieren --> Unities abgeben:
|
BloodyMess Mitglied Applicationingenieur
Beiträge: 604 Registriert: 06.06.2002 AutoCAD Map 3D 2005 (SP2 & SP1) / Win XP pro (SP1) & Win 2000 pro (SP4) AutoCAD Map 2000i / WinNT (SP6)
|
erstellt am: 21. Apr. 2005 14:37 <-- editieren / zitieren --> Unities abgeben: Nur für Feyza
|
Feyza Mitglied
Beiträge: 605 Registriert: 12.01.2004 AutoCAD Mechanical 2014 / Windows Win7 / HP-UX / Oracle 10 VB6 / Visual Studio:NET2005 / .NET 2010 - Vb.net / Windows Server 2012, ASP.net
|
erstellt am: 26. Apr. 2005 10:47 <-- editieren / zitieren --> Unities abgeben:
|