PDA

View Full Version : سوال: چه طور میشه فهمید که یه فایل بسته شده است



farapashe
شنبه 19 آذر 1390, 11:02 صبح
سلام دوستان
اگه یه فایل مثلا pdf با کد تو برنامه باز شه . حالا راهی وجود داره که فهمید کاربر کی فایل رو می بندده ؟

mehdi.mousavi
شنبه 26 آذر 1390, 16:58 عصر
سلام دوستان اگه یه فایل مثلا pdf با کد تو برنامه باز شه . حالا راهی وجود داره که فهمید کاربر کی فایل رو می بندده ؟

سلام.
در ایام نه چندان دور، این کار با استفاده از API Hooking (http://www.codeproject.com/KB/system/hooksys.aspx) میسر بود (و البته، بسته به نیاز، هنوز هم هست). مکانیزم بدین شکل هستش که جدول خدمات سیستم یا SST رو Hook میکنن تا به اطلاعات حیاتی سیستم دسترسی داشته باشن. اما انجام چنین کاری امروزه، دیگه قابل اتکا نیست، چون rootkit ها و برنامه های مخرب هم از همین روش برای مخفی کردن فعالیت خودشون استفاده می کنن. مایکروسافت هم چنین روشی رو دیگه توصیه نمیکنه، چون استفاده از روش های فوق مستلزم استفاده از توابع غیر مستند موجود در Windows هستش که ممکنه از یک نسخه به نسخه دیگه توسط مایکروسافت تغییر کنه. علاوه بر این، با معرفی سیستم عامل 64 بیتی ویندوز، استفاده از روش های فوق منجر به نمایش BSOD یا همون صفحه آبی رنگ مرگ میشه و سیستم از کار می افته. پس از چه روشی باید استفاده کرد؟ امروزه انجام چنین کارهایی، با نوشتن درایورهای mini-filter (http://msdn.microsoft.com/en-us/windows/hardware/gg462968.aspx) میسره که البته نوشتن اونها با C# غیر ممکنه، اما میشه از طریق C# با چنین Filter هایی در ارتباط بود...

اگر بفرمایید دقیقا دنبال انجام چه کاری هستید، شاید بتونم بهتر راهنمایی کنم.

موفق باشید.

farapashe
یک شنبه 27 آذر 1390, 12:41 عصر
سلام و از توضیحاتتون ممنونم .
ببینید برنامه ای که من نوشتم portable شده و از روی سیدی run میشه تو پایگاه داده برنامه تعداد زیادی فایل pdf به صورت باینری ذخیره شده که برای باز شدن آنها هر سری یه فایل pdf روی سیستم کاربر ایجاد میکنه بعد باز میشه ، من نمیخوام این اتفاق بیفته چون قرار نیست هیچ چیزی روی سیستم کاربر ذخیره شه به خاطر همین گفتم اگه بشه فهمید کاربر کی فایل می بنده بعد از بسته شدن ، فایل از سیستم کاربر حذف شه. حالا اگه راه حل بهتری میدانید ممنون میشم راهنماییم کنید.

Esmail Solhkhah
یک شنبه 27 آذر 1390, 12:57 عصر
نمیخوام این اتفاق بیفته چون قرار نیست هیچ چیزی روی سیستم کاربر ذخیره شه

بجای هارد از MemoryStream استفاده کنید، بعد با استفاده از کامپوننتهایی مثل DynamicPDFViewer اونو باز کنید،خود این کامپوننت یه Viewer داره که میتونید بعنوان یه کنترل ازش استفاده کنید.

این کامپوننت کلاس اصلیش متدهایی برای لود کردن Pdf از فایل-آرایه بایتی-استریم داره.

http://www.cete.com/Products/Dynamic...r/Download.csp (http://www.cete.com/Products/DynamicPDFViewer/Download.csp)

موفق باشید.