Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Серверные продукты Microsoft » Microsoft Windows NT/2000/2003 » как запретить сохранять медиа-файлы на файл-сервере?

Ответить
Настройки темы
как запретить сохранять медиа-файлы на файл-сервере?

Аватара для Delirium

Ветеран


Сообщения: 5624
Благодарности: 936

Профиль | Отправить PM | Цитировать


Изменения
Автор: Delirium
Дата: 09-12-2008
Описание: Дополнение от Admiral
Вложения
Тип файла: rar fsw.rar
(3.0 Kb, 185 просмотров)
В данной ветке часто возникает вопрос - а как же можно ЗАПРЕТИТЬ копировать файлы определенных разрешений в некоторые папки на сервере? Дабы не кидали фильмы, музыку и прочее, но Server 2003 R2 с его File Resource Manager поставить нет возможности...
Чтобы помочь страждущим, предлагаю небольшую консольную утилитку. В чем её суть:
указываете в параметрах запуска папку на сервере и расширение, например так: fsw.exe \\server\share *.avi . Утилитка запустит простейший мониторинг данной папки и будет кидать в файл log.txt изменения, произошедшие в данной папке именно с указанными типами файлов.

Приведу исходный код и готовый exe:
читать дальше »
Код: Выделить весь код
using System;
using System.IO;

namespace FileSystemWatcherTest
{
	class Class1
	{
		[STAThread]
		static void Main(string[] args)
		{

            if (args.Length != 0)
            {
                try
                {
                    // Создаем наблюдателя
                    FileSystemWatcher watcher = new FileSystemWatcher();
                    watcher.Path = args[0]; //первый параметр при запуске
                    // Будем следить за изменениями по последнему доступу,
                    // времени записи и переименованию файла или директорий
                    watcher.NotifyFilter = NotifyFilters.LastAccess | NotifyFilters.LastWrite
                        | NotifyFilters.FileName | NotifyFilters.DirectoryName;
                    // Будем следить только за указанными файлами
                    watcher.Filter = args[1]; //второй параметр при запуске

                    // Добавляем обработчики событий
                    watcher.Changed += new FileSystemEventHandler(OnChanged);
                    watcher.Created += new FileSystemEventHandler(OnChanged);
                    watcher.Deleted += new FileSystemEventHandler(OnChanged);
                    watcher.Renamed += new RenamedEventHandler(OnRenamed);


                    // Включаем наблюдение
                    watcher.EnableRaisingEvents = true;

                    // Ждем пока пользователь не нажмет клавишу q
                    Console.WriteLine("Наблюдение запущено. Нажмите \'q\' для выхода.");
                    while (Console.Read() != 'q') ;
                }
                catch (Exception msg_ex)
                {
                    Console.WriteLine(msg_ex.Message);
                }
            }
            else
            {
                Console.WriteLine(@"Формат запуска: fsw.exe 1 2");
                Console.WriteLine(@"1-путь до папки с указанием последнего слеша (C:\temp\ или \\server\share\)");
                Console.WriteLine(@"2-тип файлов (*.jpg)");
                Console.WriteLine("Логи пишутся в файл log.txt в папке с fsw.exe");

                Console.WriteLine("Нажмите \'q\' для выхода.");
                while (Console.Read() != 'q') ;
            }

		}

		private static void OnChanged(object source, FileSystemEventArgs e)
		{
            StreamWriter sw;
            sw = File.AppendText("log.txt");
            sw.WriteLine(DateTime.Now.ToLocalTime().ToString() +  " Файл: " + e.FullPath + " " + e.ChangeType);
            sw.Close();
		}

		private static void OnRenamed(object source, RenamedEventArgs e)
		{
            StreamWriter sw;
            sw = File.AppendText("log.txt");
            sw.WriteLine("Файл: {0} был переименован в {1}", e.OldFullPath, e.FullPath);
            sw.Close();
		}
        
	}

}

Соответственно, если вам необходимо просто вжесткую удалять файлы при попытке их копирования на сервер, можно просто добавить строку File.Delete(e.FullPath) после строк sw.Close(); и он будет удаляться.
Данный код можно практически без изменений сделать службой.

Не претендую на уникальность, но вдруг кому то пригодится Если будет необходимо, перепишу под нужные запросы/параметры.
P.S. Огромное спасибо Павлу Агурову и его книге "C# Сборник рецептов" за простые и понятные коды. Кстати, очень рекомендую.

Цитата Admiral:
Тема рассчитана на обладателей NT/2000/2003
Первые двоим нужно ещё .net 1.0 или 1.1 установить, прежде чем проследовать по инструкции по компиляции исходника. Обладателям NT он правда будет не к чему, а вот обладателям 2000-го думаю, что всё же нужен.
Обладатели 2003-го могут приступать сразу же к инструкции:
1)Скопируйте код из сообщения, вставьте в блокнот, сохраните его в файл, например под именем fsw.cs.
2)Зайдите в консоли в директорию в которую сохранили этот файл, наберите команду
%SystemRoot%\Microsoft.NET\Framework\v1.1.4322\csc.exe fsw.cs
в пути вместо .4322 может быть другое число в зависимости от установленного Сервис пака, данное справедливо для 2003 Sp2[/i]
4)В этой же директории Вы получите файл скомпилированный (exe) и готовый к работе файл.
Почему именно 1.1? Потому что он встроенный в 2003, не все обладатели последнего ставят 2.0, а то и 3.0/3.5.
Кстати он будет весить всего лишь 5,00 KB (5 120 bytes), чего там студия кроме иконки компилятору велела написать остаётся по ту сторону этой сборки ехе.

-------

Пройденные курсы:
[Microsoft №10174 Sharepoint], [SharePoint]
Мои проекты:[CheckAdmins], [NetSend7], [System Uptime], [Remote RAdmin LogViewer],[Netdom GDI], [Holidays - напоминалка о днях рождения]

А я офис-гуру :)

Это сообщение посчитали полезным следующие участники:

Отправлено: 08:41, 02-12-2008

 

Аватара для Delirium

Ветеран


Сообщения: 5624
Благодарности: 936

Профиль | Отправить PM | Цитировать


Nitrokamer, я бы с удовольствием, но пока нет возможности, завалы на работе Как освобожусь, обещаю дописать(точнее, переписать с нуля, ибо исходники умерли вместе с винтом)

-------

Пройденные курсы:
[Microsoft №10174 Sharepoint], [SharePoint]
Мои проекты:[CheckAdmins], [NetSend7], [System Uptime], [Remote RAdmin LogViewer],[Netdom GDI], [Holidays - напоминалка о днях рождения]

А я офис-гуру :)


Отправлено: 07:59, 26-08-2009 | #21



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.

tom tom вне форума

Новый участник


Сообщения: 4
Благодарности: 0

Профиль | Отправить PM | Цитировать


блин где можно скачать программу сервера не работают на рапиде срок закончился. Помогите!!!
дайте хоть старую программу.

Отправлено: 17:53, 23-10-2009 | #22


Пользователь


Сообщения: 95
Благодарности: 0

Профиль | Отправить PM | Цитировать


+1
дайте хоть старую версию поюзать!
Актуально.
Видел, ее размеры позволяют перекинуть на почту.
Снизойдите - zubkoff.s[delit_sobaka].gmail.com

Отправлено: 17:25, 03-11-2009 | #23


Пользователь


Сообщения: 95
Благодарности: 0

Профиль | Отправить PM | Цитировать


Обратил внимание на некоторые нюансы.
1. Она не стирает файлы, которые уже записаны на ресурсе, что вполне очевидно.
2. Не могу понять, когда именно и как она производит поиск файлов по указанной маске - на лету, или уже после запилси, по какому-то своему внутреннему шедулу? Некоторые файлы успешно удаляются. А некоторые - в логе написно несколько одинаковых записей - "%путь к файлу% Не удалось удалить". Т.е. файл по маске он нашел, но удалить не может. Программа запущена под админ правами. Вручую файл удаляется.
Можно подумать, что файл кем-то занят - НО это не так.

В общем немного разочарован данной утилитой. Буду продолжать поиски решения по фильтру записи файлов по маске.

Отправлено: 18:29, 04-11-2009 | #24


Аватара для Delirium

Ветеран


Сообщения: 5624
Благодарности: 936

Профиль | Отправить PM | Цитировать


Цитата zubkoff.s:
Не могу понять, когда именно и как она производит поиск файлов по указанной маске - на лету, или уже после запилси, по какому-то своему внутреннему шедулу? »
Поиска как такового нет, утилита использует средства .NET framework для наблюдения за файловой системой, это что то вроде подписки на события системы при записи на винт. Если образно. Для того, чтобы написать полноценный файловый драйвер, который будет все это дело обрабатывать, надо покупать в MS спец. пакет.
Цитата zubkoff.s:
Т.е. файл по маске он нашел, но удалить не может »
Дело в том, что триггер программы срабатывает при начале записи на винт, но, если размер файла очень большой, то пока будет идти попытка записи, файл будет заблокирован системой. Это недостатки реализации FileSystemWatcher в .NET Framework. Если вам нужен надежный способ - то ставьте 2003R2. Хотя эту защиту обойти элементарно простой сменой расширения файла

-------

Пройденные курсы:
[Microsoft №10174 Sharepoint], [SharePoint]
Мои проекты:[CheckAdmins], [NetSend7], [System Uptime], [Remote RAdmin LogViewer],[Netdom GDI], [Holidays - напоминалка о днях рождения]

А я офис-гуру :)


Отправлено: 01:33, 23-11-2009 | #25


Новый участник


Сообщения: 19
Благодарности: 0

Профиль | Отправить PM | Цитировать


Большое спасибо за утилиту!
Уважаемый Delirium, а возможно ли вести наблюдение сразу по нескольким маскам (*.jpg and *.mp3)?

Отправлено: 15:53, 21-01-2011 | #26


Новый участник


Сообщения: 2
Благодарности: 0

Профиль | Отправить PM | Цитировать


Delirium вот у тя написано что есл в коде дописать File.Delete(e.FullPath) и он будет удалять файлы указанные по расширению, но у меня почему то не получается((.....пожалуйста, пропиши как именно нужно это в коде прописать??....плюс у меня еще без File.Delete(e.FullPath) тож не пашет утилитка, в смысле лог то он ведет, а запрет не делает на заданное мной расширение.

Отправлено: 13:09, 27-09-2011 | #27


Аватара для Delirium

Ветеран


Сообщения: 5624
Благодарности: 936

Профиль | Отправить PM | Цитировать


Lentyi, сейчас не могу ничего подсказать, времени нет совсем. Но я обещаю переписать программу в более удобный вид и выложить.

-------

Пройденные курсы:
[Microsoft №10174 Sharepoint], [SharePoint]
Мои проекты:[CheckAdmins], [NetSend7], [System Uptime], [Remote RAdmin LogViewer],[Netdom GDI], [Holidays - напоминалка о днях рождения]

А я офис-гуру :)


Отправлено: 15:07, 29-09-2011 | #28



Компьютерный форум OSzone.net » Серверные продукты Microsoft » Microsoft Windows NT/2000/2003 » как запретить сохранять медиа-файлы на файл-сервере?

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
[решено] Запретить сохранять файлы определённого расширения. exo Microsoft Windows NT/2000/2003 12 05-04-2010 11:58
Как в домене вин 2003 запретить пользователям сохранять файлы определенного типа Russo Microsoft Windows NT/2000/2003 5 12-02-2009 10:25
Интернет - Как в Internet Explorer 6 запретить скачивать файлы zai Microsoft Windows 2000/XP 4 04-07-2008 21:17
[решено] Запретить файлы *.exe Aleksis Aleks Хочу все знать 22 03-07-2007 19:07
Как на сервере терминалов запретить пользователям доступ к командной строке? klesk Microsoft Windows NT/2000/2003 3 09-02-2007 09:03




 
Переход