|
Программирование >> Автоматически обновляемые приложения
Примечание Пример сравнения двух файлов находится в папке FileCompare на прилагаемом диске. Отслеживание изменений в файловой системе в .NET Framework имеется такой интересный класс, как FiieSystemWatcher из пространства имен system, ю, который позволяет следить за изменениями в файловой системе. Например, вы можете установить наблюдение за заданной папкой и отслеживать любые изменения в подпайках и файлах. Обратите внимание, что наблюдать за файлами можно не только на локальном компьютере, но и на сетевых дисках или удаленных компьютерах. Я приведу лишь базовый пример (листинг 10.43), который даст представление о классе FilySystemWatcher. Листинг 10.43. Отслеживание изменений в файловой системе private void Forml Load(object sender, EventArgs e) { Создадим объект FiieSystemWatcher и установим его свойства FiieSystemWatcher watcher = new FiieSystemWatcher(); Наблюдение за папкой WUTEMP watcher.Path = @ C:\wutemp\ ; Следим за изменениями по последнему доступу, времени записи и переименования файлов или папки private void buttonl Click(object sender, EventArgs e) { Сравниваем два файла. Путь к файлам указан в текстовых полях. if (FileCompare(this.textBoxl.Text, this.textBox2.Text)) MessageBox.Show( Файлы одинаковы. ); else { MessageBox.Show( Файлы не одинаковы. ); События private static void OnChanged(object source, FileSystemEventArgs e) { При изменении, создании или удалении файла выводим сообщение MessageBox.Show( Файл: + e.FullPath + + е.ChangeType); private static void OnRenamed(object source, RenamedEventArgs e) { При переименовании файла тоже выводим сообщение MessageBox.Show( Файл: + е.OldFullPath + переименован в + e.FullPath); Можно написать приложение, которое при изменениях в наблюдаемых папках будет отсылать сообщения по электронной почте. Учитывая, что слежение за папками можно проводить и на удаленных машинах, вы можете использовать эту возможность для разработки полезных утилит, которые пригодятся системному администратору. Примечание Пример работы с классом FiieSystemWatcher НЭХОДИТСЯ В папке Watcher на прилагаемом диске watcher.NotifyFilter = NotifyFilters.LastAccess I NotifyFilters.LastWrite I NotifyFilters.FileName NotifyFilters.DirectoryName; Наблюдаем только файлы TXT watcher.Filter = *.txt ; Добавляем обработчики событий watcher.Changed += new FileSystemEventHandler(OnChanged) ; watcher.Created += new FileSystemEventHandler(OnChanged); watcher.Deleted += new FileSystemEventHandler(OnChanged); watcher.Renamed += new RenamedEventHandler(OnRenamed); Начинаем наблюдение watcher.EnableRaisingEvents = true; Листинг 10.44. Установка уровня доступа к файлу using System.Security.AccessControl; using System.10; static void SetRule(string filePath, string account, FileSystemRights rights, AccessControlType controlType) Получим объект FileSecurity, который устанавливает текущие настройки безопасности FileSecurity fSecurity = File.GetAccessControl(filePath); Добавим FileSystemAccessRule к настройкам безопасности fSecurity.ResetAccessRule(new FileSystemAccessRule(account, rights, controlType) Устанавливаем новые настройки доступа File.SetAccessControi(filePath, fSecurity); private void butDenyAccess Click(object sender, EventArgs e) { Отказать в доступе пользователю alexander SetRule(@ d:\test.txt , alexander , FileSystemRights.Read, AccessControlType.Deny); Как установить уровень доступа к файлу? Закончить главу я хочу кратким обзором новой возможности настройки уровня доступа к файлам и папками. В .NET Framework 2.0 появились новые методы GetAccessControl И SetAccessControl КЛассОВ File И Directory, С помощью которых можно прочитать ИЛИ установить уровень доступа к файлу или папке. Общая методика изменения уровня доступа к файлу следующая. Сначала вы выбираете файл, настройки доступа которого вы хотите изменить, далее с помощью метода GetAccessControl узнаете текущие настройки безопасности, и затем при помощи SetAccessControi устанавливаете уже нужные настройки для доступа. В следующем примере я устанавливаю настройки к файлу test.txt для пользователя alexander (то есть для себя), в результате чего при попытке открыть файл для чтения я получу сообщение, что мне отказано в доступе. Чтобы вернуть доступ к файлу, нужно снова изменить настройки.
|
© 2006 - 2024 pmbk.ru. Генерация страницы: 0
При копировании материалов приветствуются ссылки. |