2009-07-10 43 views
14

Tôi đang cố gắng tạo một chương trình nhỏ có thể chặn quy trình mở của tệp.Cửa sổ chặn mở tệp

Mục đích là khi người dùng nhấp đúp vào một tệp trong một thư mục nhất định, cửa sổ sẽ thông báo cho phần mềm, sau đó xử lý yêu cầu đó và trả về cửa sổ dữ liệu của tệp.

Có thể sẽ có giải pháp khác như theo dõi Mở thư và buộc Windows phải đợi trong khi chương trình chuẩn bị nội dung của tệp.

Một ứng dụng của khái niệm này, có thể quản lý việc giải mã một tệp một cách minh bạch cho người dùng. Trong ngữ cảnh này, tệp được mã hóa sẽ nằm trên đĩa và khi người dùng mở nó (bằng cách nhấp đúp vào nó hoặc với một số ứng dụng như notepad), quá trình nền sẽ chặn sự kiện mở đó, giải mã tệp và cung cấp nội dung của tệp đó vào ứng dụng yêu cầu.

Đó là một khái niệm hơi lạ, nó có thể giống như khái niệm mạng "Man In The Middle", nhưng với các tệp thay vì gói mạng.

Cảm ơn bạn đã đọc.

Trả lời

10

Cách tốt nhất để làm điều đó để bao gồm tất cả các trường hợp mở từ bất kỳ chương trình nào sẽ thông qua một file system filter driver. Điều này có thể quá phức tạp đối với nhu cầu của bạn.

+0

Bạn có thể tìm thông tin về người lái xe ở đâu? – Geo

+0

Tôi liên kết với trang MS có rất nhiều tài nguyên và thông tin. –

+0

phần mềm chống vi-rút, mã hóa/nén bay và hơn thế nữa được xây dựng theo cách này bằng cách này. –

0

Windows có tùy chọn mã hóa tệp trên đĩa (tệp-> thuộc tính-> nâng cao-> mã hóa) và tùy chọn này hoàn toàn minh bạch đối với các ứng dụng.

Có thể để mã hóa giải mã các phần của đĩa, bạn nên xem xét các phần mềm như criptainer?

Có phần mềm này là http://www.truecrypt.org/downloads (nguồn mở và miễn phí) nhưng tôi chưa thử.

Phát triển giải pháp tùy chỉnh có vẻ rất khó.

+0

Ok, bạn có thể làm điều đó như một trình điều khiển bộ lọc hệ thống tập tin nhưng tôi không nghĩ đó là một giải pháp "khả thi" .. bất kể bạn có nhiều thời gian và kỹ năng :-) và đang phát triển một cái gì đó rất cụ thể mà chỉ yêu cầu đó. –

+0

Ví dụ về crypt chỉ để minh họa cho sự nghi ngờ. Tôi không cần bất kỳ mã hóa nào cả :) – HyLian

11

Bạn có thể sử dụng mẹo mà Process Explorer sử dụng để thay thế chính nó bằng trình quản lý tác vụ. Về cơ bản tạo ra một chìa khóa như thế này:

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options\taskmgr.exe

đâu bạn thay thế 'taskmgr.exe' với tên của quá trình để đánh chặn. Sau đó, thêm một giá trị chuỗi gọi là 'Debugger' có đường dẫn đến tệp thực thi của bạn. Ví dụ:

Debugger -> "C:\windows\system32\notepad.exe"

Mỗi một quá trình được điều hành phù hợp với hình ảnh tên quá trình của bạn sẽ thực sự được gọi là một trình gỡ lỗi cho quá trình đó với đường dẫn đến quá trình thực tế như một cuộc tranh cãi.

+0

Tôi tin rằng đây sẽ là cách tốt nhất, nhưng làm thế nào tôi có thể sử dụng nó cho openfiledialogs? Mở hộp thoại tập tin nằm trong quyền comdlg32.dll? –

4

Bạn có thể sử dụng tính năng tiêm mã và chuyển hướng API. Bạn sẽ bắt đầu quá trình nhắm mục tiêu của bạn và sau đó tiêm một DLL mà móc các chức năng API cửa sổ mà bạn muốn chặn. Sau đó bạn sẽ được gọi khi quá trình nhắm mục tiêu nghĩ rằng nó đang gọi OpenFile() hoặc bất cứ điều gì và bạn có thể làm những gì bạn thích trước khi chuyển cuộc gọi đến API thực.

Google cho "IAT hooking".

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