Я ищу способ, которым мой компьютер с Windows Small Business Server 2011 может автоматически создавать системные события каждый раз, когда в определенном каталоге появляется вновь созданный файл размером 10 ГБ и более. Кажется, что идеальным инструментом для использования является диспетчер ресурсов файловой системы, но с его помощью я могу установить только жесткие / мягкие квоты для всего каталога, а не индивидуально. новый файлы. Файловые экраны, похоже, тоже не помогают. Как я могу достичь своих целей с помощью имеющихся у меня инструментов?
Вы не упомянули, какие у вас есть «инструменты», поэтому я дам вам ответ, используя инструменты. я иметь.
Я бы сделал это, реализовав простую программу на C #, работающую в фоновом режиме, возможно, даже службу. Он будет реализовывать класс FileSystemWatcher и подписываться на Создано событие, если я правильно прочитал ваш вопрос, это то, что вы хотите контролировать. Как только событие возникнет / инициируется, запишите запись в журнал событий.
Теперь вы упомянули настройку квоты? Возможно, вам придется расширить это, и я обновлю свой ответ позже, потому что это немного сбивает с толку, вы говорите, что хотите Отрицать люди создают файлы размером 10 ГБ в определенной папке? Мой следующий раздел предполагает это.
После (или до) записи записи в журнал событий вы можете просто стереть записанный файл, тем самым включив «квоту». Квоты не позволяют записывать файлы сверх квоты, поэтому не будет проблем, если файл был записан, а затем немедленно удален. Конечно, код стоит тысячи слов, поэтому
using System;
using System.IO;
using System.Diagnostics;
using System.Security.Permissions;
public class Watcher
{
public static void Main()
{
Run();
}
public static void Run()
{
string path = "C:\\MyDocs";
// Create a new FileSystemWatcher and set its properties.
FileSystemWatcher watcher = new FileSystemWatcher();
watcher.Path = path;
/* 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;
// Add event handlers.
watcher.Created += new FileSystemEventHandler(OnChanged);
// Begin watching.
watcher.EnableRaisingEvents = true;
while(true);
// Do nothing but wait for files created.
}
// Define the event handlers.
private static void OnChanged(object source, FileSystemEventArgs e)
{
// Specify what is done when a file is created
//Test for file size
FileInfo flNewFile = new FileInfo(e.FullPath);
if(flNewFile.length > 10737418239) //Google says 10GB = 10737418240, so I subtracted one byte and used that as a test.
{
//Write to event log.
EventLog elApplication = new EventLog("Application");
myLog.Source = "MyAppName";
myLog.WriteEntry("File size too big for this folder. File " + e.FullPath + " will be deleted.", EventLogEntryType.Warning);
flNewFile.Delete();
}
}
}
Ссылки:
http://msdn.microsoft.com/en-us/library/system.io.filesystemeventargs.fullpath(v=vs.110).aspx http://msdn.microsoft.com/en-us/library/system.io.fileinfo.delete(v=vs.110).aspx http://msdn.microsoft.com/en-us/library/fc682h09(v=vs.110).aspx