2012-05-10 25 views
8

Có thể khi hoạt động của tệp được gọi bằng cách nào đó - như mở hay đóng - tôi có thể xử lý nó trước khi yêu cầu được hệ điều hành thực hiện và nếu có thể hủy nó theo .NET? Nếu .NET không có khả năng như thế, làm thế nào tôi có thể làm được điều này?Có thể theo dõi các thao tác tệp bằng .NET không?

Trả lời

6

gì hỏi của bạn để làm có thể được thực hiện. Ví dụ, máy quét vi-rút, luôn làm như vậy. Bạn có thể dễ dàng theo dõi hoạt động của tệp bằng Process Monitor. Bạn cũng có thể làm điều đó theo chương trình trong C# bằng cách sử dụng FileSystemWatcher Class. Nhưng cố gắng để ngăn chặn một chương trình từ mở hoặc cố gắng để ngăn chặn một chương trình truy cập vào các tập tin không thể được thực hiện trong C#. Bạn sẽ cần phải sử dụng C hoặc C++. Bạn cần tạo một File System Filter Driver. Đó là một điều phức tạp để xây dựng nhưng chính xác những gì bạn cần. Để báo giá MSDN:

A file system filter driver intercepts requests targeted at a file system or another file system filter driver. By intercepting the request before it reaches its intended target, the filter driver can extend or replace functionality provided by the original target of the request. Examples of file system filter drivers include anti-virus filters, backup agents, and encryption products.

2

Sysinternals cung cấp một công cụ miễn phí có tên Process Monitor, một chức năng trong số đó là để đính kèm vào quá trình tùy ý Windows (bao gồm cả các ứng dụng .NET) và chụp cuộc gọi hệ thống, bao gồm cả tệp đang mở, đóng, đọc, v.v.

Bạn có thể tải xuống tệp tại số Process Monitor Download Page.

EDIT

Khi tôi đọc lại câu hỏi của bạn, tôi thấy bạn đang hỏi về việc chặn và có thể hủy các thao tác đó. Tôi tin rằng các lớp học FileSystemWatcher sẽ là đặt cược tốt nhất của bạn, mặc dù tôi không nghĩ rằng nó có thể hủy bỏ các hoạt động tập tin đơn phương - bạn cần phải xây dựng một số loại cơ chế hợp tác để báo hiệu người gọi để hủy bỏ hoạt động của nó.

1

Tôi khá chắc chắn rằng bạn đã có để có được vào hạt nhân vào loại hoạt động và tôi khá chắc chắn rằng có nghĩa là bạn sẽ cần phải mã trong C. Nhìn vào File System Drivers.

CẬP NHẬT: điều này SO link có thể trợ giúp.

UPDATE: thêm một tìm kiếm google cho Windows File System Drivers

CŨNG What is a good resource to get started with Windows file system driver development?

+0

Liên kết không còn hoạt động. –

+0

@ JamesWilkins nó phải là tạm thời. Cả hai liên kết chỉ làm việc cho tôi. Tốt – kenny

Các vấn đề liên quan