Home | Contact Us | FAQ | Search & Site Map | Link to Us
Sign In | Join | Other 45 Sites in Network
HomeAnnouncementsFree MagazinesWhite PapersSubmit Content
Discussion GroupsASP.NETWindows FormsLanguages.NET FrameworkVisual Studio.NET
Articles.NET FrameworkASP.NETToolsWindows Forms
.NET DirectoryOpen Source ProjectsUser GroupsWeb Resources
Related Topics
Visual Basic 6SQL ServerMS AccessOther DB ProductsMS Server ProductsMore Topics ...

.NET Forum / .NET Framework / New Users / March 2006

Tip: Looking for answers? Try searching our database.

FileSystemWatcher onCreated tell where it was created from?

Thread view: 
Enable EMail Alerts  Start New Thread
Thread rating: 
Brandon - 08 Mar 2006 20:55 GMT
I'm trying to get a piece of software that will monitor a location on a
drive, and if something appears on the location, report what was created and,
if applicable where it was copied from.
For instance, monitor my D:\
I copy a file from C:\ to D:\
I get "<filename> created on D:\ from C:\<filename>"

While I realize this may not be directly possible w/ .NET, if it's not, does
somebody know where I could look in the WinAPI to find this out?

Thanks
Signature

He who dies with the most toys wins.

Michael Nemtsev - 08 Mar 2006 21:23 GMT
Hello Brandon,

The FileSystemWatcherClass is responsible for this

see sample below (MSDN).
The component is set to watch for changes in LastWrite and LastAccess time,
the creation, deletion, or renaming of text files in the directory. If a
file is changed, created, or deleted, the path to the file prints to the
console. When a file is renamed, the old and new paths print to the console.

public class Watcher
{

   public static void Main()
   {
    Run();

   }

   [PermissionSet(SecurityAction.Demand, Name="FullTrust")]
   public static void Run()
   {
       string[] args = System.Environment.GetCommandLineArgs();

       // If a directory is not specified, exit program.
       if(args.Length != 2)
       {
           // Display the proper way to call the program.
           Console.WriteLine("Usage: Watcher.exe (directory)");
           return;
       }

       // Create a new FileSystemWatcher and set its properties.
       FileSystemWatcher watcher = new FileSystemWatcher();
       watcher.Path = args[1];
       /* Watch for changes in LastAccess and LastWrite times, and
          the renaming of files or directories. */
       watcher.NotifyFilter = NotifyFilters.LastAccess | NotifyFilters.LastWrite

          | NotifyFilters.FileName | NotifyFilters.DirectoryName;
       // Only watch text files.
       watcher.Filter = "*.txt";

       // Add event handlers.
       watcher.Changed += new FileSystemEventHandler(OnChanged);
       watcher.Created += new FileSystemEventHandler(OnChanged);
       watcher.Deleted += new FileSystemEventHandler(OnChanged);
       watcher.Renamed += new RenamedEventHandler(OnRenamed);

       // Begin watching.
       watcher.EnableRaisingEvents = true;

       // Wait for the user to quit the program.
       Console.WriteLine("Press \'q\' to quit the sample.");
       while(Console.Read()!='q');
   }

   // Define the event handlers.
   private static void OnChanged(object source, FileSystemEventArgs e)
   {
       // Specify what is done when a file is changed, created, or deleted.
      Console.WriteLine("File: " +  e.FullPath + " " + e.ChangeType);
   }

   private static void OnRenamed(object source, RenamedEventArgs e)
   {
       // Specify what is done when a file is renamed.
       Console.WriteLine("File: {0} renamed to {1}", e.OldFullPath, e.FullPath);
   }
}

B> I'm trying to get a piece of software that will monitor a location on
B> a
B> drive, and if something appears on the location, report what was
B> created and,
B> if applicable where it was copied from.
B> For instance, monitor my D:\
B> I copy a file from C:\ to D:\
B> I get "<filename> created on D:\ from C:\<filename>"
B> While I realize this may not be directly possible w/ .NET, if it's
B> not, does somebody know where I could look in the WinAPI to find this
B> out?
B>
B> Thanks
B>
---
WBR,
Michael  Nemtsev :: blog: http://spaces.msn.com/laflour

"At times one remains faithful to a cause only because its opponents do not
cease to be insipid." (c) Friedrich Nietzsche
Brandon - 08 Mar 2006 21:32 GMT
Your example does not cover the scenario I outlined.
Signature

He who dies with the most toys wins.

> Hello Brandon,
>
[quoted text clipped - 87 lines]
> "At times one remains faithful to a cause only because its opponents do not
> cease to be insipid." (c) Friedrich Nietzsche
Michael Nemtsev - 08 Mar 2006 21:42 GMT
Hello Brandon,

sure, it's just a sample. Change in to meet your needs

B> Your example does not cover the scenario I outlined.
B>
B> "Michael Nemtsev" wrote:
B>
>> Hello Brandon,
>>
[quoted text clipped - 82 lines]
>> "At times one remains faithful to a cause only because its opponents
>> do not cease to be insipid." (c) Friedrich Nietzsche

---
WBR,
Michael  Nemtsev :: blog: http://spaces.msn.com/laflour

"At times one remains faithful to a cause only because its opponents do not
cease to be insipid." (c) Friedrich Nietzsche
Brandon - 08 Mar 2006 21:55 GMT
No.

What yours does is tells me when a file was created, changed, deleted, or
renamed - which is simple and something I've already done.

What I want is for when a file is CREATED, to be able to know where it was
created FROM (ie: if a file is copied, what was the source directory, if it
was saved from an application, a 'null' value is acceptable) this the
FileSystemWatcher does not do (straightforwardly anyway).
Signature

He who dies with the most toys wins.

> Hello Brandon,
>
[quoted text clipped - 97 lines]
> "At times one remains faithful to a cause only because its opponents do not
> cease to be insipid." (c) Friedrich Nietzsche
Michael Nemtsev - 09 Mar 2006 05:45 GMT
Hello Brandon,

There are no functions to do that. What do u need is to monitor harddrivers
for changes,
and for each change, for example if file was created, u need to look at log
of changes of others drivers to
determine where file was to understand either it was newly created or copied.

B> What yours does is tells me when a file was created, changed,
B> deleted, or renamed - which is simple and something I've already
B> done.
B>
B> What I want is for when a file is CREATED, to be able to know where
B> it was created FROM (ie: if a file is copied, what was the source
B> directory, if it was saved from an application, a 'null' value is
B> acceptable) this the FileSystemWatcher does not do (straightforwardly
B> anyway).
B>
B> "Michael Nemtsev" wrote:
B>
>> Hello Brandon,
>>
[quoted text clipped - 100 lines]
>> "At times one remains faithful to a cause only because its opponents
>> do not cease to be insipid." (c) Friedrich Nietzsche

---
WBR,
Michael  Nemtsev :: blog: http://spaces.msn.com/laflour

"At times one remains faithful to a cause only because its opponents do not
cease to be insipid." (c) Friedrich Nietzsche
Brandon - 09 Mar 2006 15:13 GMT
Creating an FSW on all the drives will also not help me - when a file is
copied FROM a drive, nothing about the file changes, therefore an FSW on the
drive will catch nothing. While LastAccess filter seems to grab the data
occasionally, it's not reliable in the least.

I was expecting a solution involving something with the WinAPI - can anybody
else offer some insight. I could have guaranteed that .NET wouldn't offer
this level of functionality.
Signature

He who dies with the most toys wins.

> Hello Brandon,
>
[quoted text clipped - 127 lines]
> "At times one remains faithful to a cause only because its opponents do not
> cease to be insipid." (c) Friedrich Nietzsche
Goran Sliskovic - 09 Mar 2006 20:15 GMT
> I'm trying to get a piece of software that will monitor a location on a
> drive, and if something appears on the location, report what was created
[quoted text clipped - 7 lines]
> does
> somebody know where I could look in the WinAPI to find this out?
...

I don't believe you will find something like that. Generally, there is no
way to get that info (even kernel usually  does not know).

Goran

Free Magazines

Get these publications absolutely FREE for up to 12 months. There are no hidden fees and no obligation. Simply choose a title, complete the application form and submit it. Read more ...

Oracle MagazineNetwork ComputingComputer WorldBio-IT WorldeWeekInformation WeekInfosecurity
 
Sign In
Join
My Latest Posts
My Monitored Threads
My Blog
My Photo Gallery
My Profile
My Homepage

Start New Thread
Enable EMail Alerts
Rate this Thread



©2008 Advenet LLC   Privacy Policy - Terms of Use
This website includes both content owned or controlled by Advenet as well as content owned or controlled by third parties.