Operativsystem: Windows
Programmeringsspråk: Python eller Visual Basic
Har en fundering på om det går att övervaka och föra loggar över mappar på något smidigt sätt.
Det tillstånd jag är mest intresserad av är hur länge en mapp är öppen och få det presenterat i ex en textfil.
Det torde väl bli någon "pollningshistoria" som ligger och kollar mappen hela tiden och startar en timer när den är öppen och stoppar den samt skriver till en loggfil när mappen stängs.
Jag är inget vidare fräsig på programmering, kan fuska mig till en del i python, php och VB men thats it.
Hur menar du att en mapp är öppen då ? att den har en öppen fil i sig ?
Som jag ser det är ju aldrig en mapp "öppen", det man ser är ju bara en gammal kopia på hur den såg ut när den öppnades för att läsa ut fillistan ? ..möjligen med nån automatik för autorefresh när något ändrar sig.
En mapp accessas i området microsekunder när en fil söks och dessutom är det inte blockerande. - det är alltså ingen fil som hålls 'öppen' om filer under denna är accessad utan de får en direktadress istället
Att det grafiskt ser ut som att en mapp är öppnad eller stängd är bara 'smink' i den grafiska presentationen och är inget som återspeglas i filsystemet.
I unix-filsystem (och förmodligen NTFS i och med en viss Unix-kompabilitet) så kanske man kan se om en mapp när den var accessad sist med 'atime' - men det är också en funktion som kan stängas av (och görs om man har SSD) för att inte slita i onödan på flashminnet.
Mappen "öppnas" även då t.ex ett program som ligger i mappen startar.
Eller då ett program gör något med en fil i mappen. Ingår det i det som
i denna tråd kallas för att "öppna"?
Besvärlig fråga - I linux finns kommando som kallas 'lsof' för att se aktiva och öppnade filer med tillhörande path, tex. lsof används i situation där du inte kan umounta en volym och försöker lista ut vad som tjuvhåller filen.
Många program öppnar och stänger dessutom filen i korta perioder och det är inte förrän i momentet 'läsa', 'spara' etc. som den faktiskt greppar filen på massvolymen och dessutom kan en hel del ske i cachen (det finns i många lager i ett modernt filsystem idag) utan att det speglas ut ända ut på massvolymen.
Om det finns motsvarande 'enkla' API som 'lsof' i windows vet jag inte, men det finns program mm. som bevakar om och när filerna öppnas och stängs och programmet får notation om detta och agerar därefter, en del backupprogram jobbar den vägen (typ timemachine-liknande backupprogram) och (anti)virus-program jobbar också den vägen och har lagt avlyssning/handtag i funktionen som öppnar och stänger filer på nära/i OS och filsystem-nivå..
Det är förmodligen dom API:erna man får försöka jaga.
Tänk på att det du ser grafiskt i en applikation/filhanterar stämmer väldigt lite med vad som faktiskt utförs på disken.
Du kan logga när innehållet i en mapp ändras. Du kan inte tillförlitligt se om/när någon listar filer. Det finns inget öppna/stäng av en mapp, det finns bara "läs rätt sektion av MFT:n".
Edit/update:
Om man specialiserar frågan lite grann, tex "hur kan jag se när en mapp är 'öppen' i utforskaren?" skulle det gå att lösa med lite fulhacks. Men vad hindrar användaren att använda något annat filhanteringsprogram? Att få till en generell lösning är i princip omöjligt.
Egentligen är det väl så att en "Mapp" inte existerar utan är bara en virtuell bild av ett visst avsnitt av disken.
Följaktligen går det väl knappast att avgöra om en mapp är "öppen" eftersom mapparna inte existerar, och kan därför inte öppnas.
Eller rättare sagt, en Mapp är en fil med en bunt pekare i, vilken OSet läser för att kunna visa innehållet i mappen. Eftersom denna läsning går väldigt snabbt, så är det meningslöst att ens försöka avgöra om filen ifråga är öppen eller stängd.
Den är alltid stängd, eftersom läsprocessen alltid avslutas innan processorn skall göra nästa sak.