PDA

View Full Version : پروژه ی کامل پسورد گذاری روی فولدرها و فایل ها



HAIdle
یک شنبه 20 مرداد 1387, 00:29 صبح
با سلام خدمت همه‌ی دوستان عزیز
من می خوام یه برنامه با سی شارپ بنویسم که نهایتاً موارد زیر را فراهم کند:
1. توی ویندوز وقتی روی یک فایل یا فولدر، کلیک راست می کنیم، یک گزینه اضافه شود که مربوط به برنامه ی ما باشد.
2. با انتخاب این گزینه در منوی باز شده، یک پنجره باز شود که یک پسورد از کاربر بگیرد. کاربر با وارد کردن این پسورد و تأیید آن و بستن پنجره، باعث می شود که فولدر یا فایل انتخاب شده به فولدری تبدیل شود که فقط با وارد کردن این پسورد امکان دسترسی به محتوای آن فراهم شود. به عبارت دیگر، پس از پسورد گذاشتن روی این فولدر یا فایل، اگر روی آن کلیک کردیم، یک پنجره باز شود و یک پسورد بگیرد. اگر این پسورد با پسورد قبلی تطبیق داشت، فولدر یا فایل را باز کند و گرنه پیغام خطایی تولید کند.
به عبارت دیگر می خواهم یک برنامه برای پسورد گذاشتن روی فایلها و فولدرها بنویسم.
ممنون می شوم که دوستان در هر قسمتی که مایل بودند، من را راهنمایی نمایند.

Amir Oveisi
یک شنبه 20 مرداد 1387, 00:45 صبح
سلام
من همین الان دارم همچین برنامه ای می نویسم!
تقریبا داره مراحل پایانیش رو سپری میکنه و دارم UI‌شو طراحی می کنم
برای فایل که فکر نکنم مشکل خاصی باشه، من واسه فایل چند نوع مختلف دارم، یکیش اینه که فایل Encrypt‌میشه با الگوریتم AES و فقط نرم افزار میتونه دوباره Decrypt‌ش بکنه (با پسوردی که وارد میشه واسه فایل)
دومیش اینه که فایل Encrypt میشه با الگوریتم AES و تبدیل میشه به یه فایل exe که قابلیت self-decrypting داره، یعنی یه پسورد میدی و encrypt‌میکنی و تبدیل میشه به یه فایل exe. حالا هر موقع این فایل exe رو اجرا میکنی پسورد قبلی رو میخواد و در صورت درست وارد کردن پسورد، خودش خودش رو decrypt‌میکنه و تبدیل میشه به اون فایلی که قبلا بوده.

کلیات کار من اینجوریه امیدوارم به دردت بخوره

موفق باشید
jooje

DarkSoroush
یک شنبه 20 مرداد 1387, 01:25 صبح
با سلام خدمت همه‌ی دوستان عزیز
من می خوام یه برنامه با سی شارپ بنویسم که نهایتاً موارد زیر را فراهم کند:
1. توی ویندوز وقتی روی یک فایل یا فولدر، کلیک راست می کنیم، یک گزینه اضافه شود که مربوط به برنامه ی ما باشد.
2. با انتخاب این گزینه در منوی باز شده، یک پنجره باز شود که یک پسورد از کاربر بگیرد. کاربر با وارد کردن این پسورد و تأیید آن و بستن پنجره، باعث می شود که فولدر یا فایل انتخاب شده به فولدری تبدیل شود که فقط با وارد کردن این پسورد امکان دسترسی به محتوای آن فراهم شود. به عبارت دیگر، پس از پسورد گذاشتن روی این فولدر یا فایل، اگر روی آن کلیک کردیم، یک پنجره باز شود و یک پسورد بگیرد. اگر این پسورد با پسورد قبلی تطبیق داشت، فولدر یا فایل را باز کند و گرنه پیغام خطایی تولید کند.
به عبارت دیگر می خواهم یک برنامه برای پسورد گذاشتن روی فایلها و فولدرها بنویسم.
ممنون می شوم که دوستان در هر قسمتی که مایل بودند، من را راهنمایی نمایند.
خب شما با برنامه مشکلی نداری. طبیعتا" باید با روشهای ENCRYPT و ... اشنا باشی
ولی در انتها برای انجام کارهایی که میخوای یعنی اضافه کردن یک کلیک راست میتونی از رجیستری کمک بگیری و پارامترهایی که به برنامه شما میفرسته. البته بهتره یک فرمت هم تشکیل بدی و ساختار فرمتت رو ریسورس بزنی تا قابلیت ایکون زدن برای فایل اینکریپت شده را بده. به طور کلی اگر برنامه شما میتونه به طور کامل کار کنه (یعنی توابع ENCRYPT و DEECRYPT رو نوشتید) من میتونم برای موضوعاتی شبیه به اضافه کردن مقادیر در رجیستری و کلا استاندارد سازی برنامه بهتون کمک کنم. ولی اگر مشکلتون در مورد ENC و DEENC هست شما باید در همین سایت سرچ کنید چون بارها در این باره بحث شده.
البته شما اگر بخواهید برنامهتون خیلی استاندارد باشه باید یک DLL به زبان C++ هم بنویسید تا محیط ویندوز شبیه نرمافزار Private Folder ماکروسافت هماهنگ باشه.
در ضمن اگر بخواهید با فولدر ها کار کنید باید یک نوع فایل تایپ شبیه به دیتا بیس بسازید تا قابلیت قرار دادن چند فایل در اون وجود داشته باشه!! من شخصا تصمیم دارم روی این موضوع کار کنم.

Amir Oveisi
یک شنبه 20 مرداد 1387, 01:39 صبح
و اما در مورد فولدر:
تا الان همه برنامه هایی که من دیدم که خوب بودن اینجوریه طرز کارشون که میان همه فایل های موجود تو اون فولدر رو جمع میکنن تو یه فایل با یه پسوند خاص(مثل .___ppp) و icon‌ اون فایل رو شبیه icon فولدر میذارن. بعد از طریق رجیستری برنامه خودشون رو به عنوان برنامه بازکننده اون فرمت فایل خاص انتخاب میکنن
با این کار هر موقع رو اون فولدر کذایی کلیلک بشه برنامه خودشون باز میشه و با وارد شدن پسورد سناریوی بالا برعکسش اجرا میشه.

HAIdle
یک شنبه 20 مرداد 1387, 22:12 عصر
خب شما با برنامه مشکلی نداری. طبیعتا" باید با روشهای ENCRYPT و ... اشنا باشی
ولی در انتها برای انجام کارهایی که میخوای یعنی اضافه کردن یک کلیک راست میتونی از رجیستری کمک بگیری و پارامترهایی که به برنامه شما میفرسته. البته بهتره یک فرمت هم تشکیل بدی و ساختار فرمتت رو ریسورس بزنی تا قابلیت ایکون زدن برای فایل اینکریپت شده را بده. به طور کلی اگر برنامه شما میتونه به طور کامل کار کنه (یعنی توابع ENCRYPT و DEECRYPT رو نوشتید) من میتونم برای موضوعاتی شبیه به اضافه کردن مقادیر در رجیستری و کلا استاندارد سازی برنامه بهتون کمک کنم. ولی اگر مشکلتون در مورد ENC و DEENC هست شما باید در همین سایت سرچ کنید چون بارها در این باره بحث شده.
البته شما اگر بخواهید برنامهتون خیلی استاندارد باشه باید یک DLL به زبان C++ هم بنویسید تا محیط ویندوز شبیه نرمافزار Private Folder ماکروسافت هماهنگ باشه.
در ضمن اگر بخواهید با فولدر ها کار کنید باید یک نوع فایل تایپ شبیه به دیتا بیس بسازید تا قابلیت قرار دادن چند فایل در اون وجود داشته باشه!! من شخصا تصمیم دارم روی این موضوع کار کنم.

ممنون از جواب های بسیار خوب DarkSoroush و bermooda ی عزیز
فکر نکنم با رمزگذاری و رمزگشایی مشکلی داشته باشم. ولی با کار با رجیستری اصلاً آشنا نیستم. اگه راهنماییم کنید بسیار ممنون میشم. در ضمن می خواهم برنامه را اصولی بنویسم تا با اصول آن هم آشنا شوم.

sariya
یک شنبه 20 مرداد 1387, 22:31 عصر
سلام
خیلی خوب توضیح دادین ولی قسمتهایی که در مورد رجیستری توضح دادین رو بیشتر بازش کنید که
که مثلا من که تازه کارم بیشتر متوجه شم؟
مرسی اقای darksoroush va bermooda

Amir Oveisi
یک شنبه 20 مرداد 1387, 23:32 عصر
احتیاج به کد نویسی نداره اصلا!
موقع درست کردن setup توسط خود VS‌میتونین تنظیم کنین که برنامه شما چه پسوند فایلی رو باز کنه!
به همین سادگی

DarkSoroush
سه شنبه 22 مرداد 1387, 04:18 صبح
برنامه نویسی اصولی که به اینجا ربطی نداره!! :چشمک:
همون طور که bermooda گفتند خود پروژه ستاب vs برای شما میتونه اینکارو انجام بده ولی من کلیدهای دقیق رجیستریش هم میگم چون فکر نکنم ستاب برای اضافه کردن یک کلیک راست روی فایل x هم گزینه ای داشته باشه یا من ندیدم. با این حال اینها موضوعات پیچیده ای نیست. در ضمن موضوعات وارد کردن کلید در رجیستری و .. هم بحثی است که اگر سرچ کنید قبلا دوستان کلاسهایی رو قرار دادند. (البته خود دات نت هم توابعی داره ولی یکم زمان بر است. البته کلاسها هم معمولا از همانها استفاده میکنند)
به طور دقیق:
برای اضافه کردن یک گزینه در کلیک-راست ویندوز روی هر فایلی
در ادرس زیر در رجیستری یک کلید بسازید:


HKEY_CLASSES_ROOT\*\shell\
نام کلید را مهم نیست ولی مقدار پیش فرض کلید را نوشته ای بگذارید که میخواهید در زمان کلیک-راست روی فایلها دیده بشود. مثلا Encrypt
سپس یک کلید دیگر در زیر کلید قبلی بسازید به نام command و مقدار پیش فرض آن را به ادرس برنامه با ارگمون مذکور ست کنید مثلا:


"C:\Program Files\ENCSTUDIO\MYPROG.EXE" /enc "%L"

دقت کنید که بخش "%L" نام فایل هست که به فایل اجرایی شما ارسال میشه.

برای ساخت یک فرمت جدید
پسوند مد نظرتون را در کلید اصلی HKEY_CLASSES_ROOT به صورت ".نام فایل" بسازید. برای مثال:


.exe
.file
.myfile
.enc
مقادیری از جمله Content Type از نوع String وجود دارند برای مشخص کردن نوع فایل که میتونید بنوبیسید.
کلید DefaultIcon هم میتونید زیر مجموعه کلید قبلی بسازید و مقدار پیش فرضش رو به ایکون مورد نظرتون ارجاع بدید.
زیر کلید shell هم باید بسازید و مانند موضوع قبلی آن را گسترش بدهید.
در ضمن مقدار پیش فرض زیر کلید اصلی (. اسم فایل) که ساختید هم میتواند اشاره به یک زیر کلید دیگر در همان HKEY_CLASSES_ROOT باشد برای مثال مقدار پیشفرض ENCFile باشد و سایر تنظیمات در ادرس:


HKEY_CLASSES_ROOT\ENCFile
باشد. که البته این موضوع برای گرد اوری همه تنظیمات در یک مکان در صورت وجود چندین فرمت با تنظیمات یکسان استفاده میشود.

برای اضافه کردن راست کلید روی یک فرمت مشخص هم میتونید از روش اضافه کردن راست کلیک در بخش اول برای سایر فرمت ها استفاده کنید.

برای همه این کارها و بعلاوه دینامیک شدن تمام اینها مکیشه تنظیمات یک فرمت رو به یک dll ارجاء داد که یکم حرفه ای میشه و باید حتما c++ را به حد کمال بدونید.

Amir Oveisi
سه شنبه 22 مرداد 1387, 14:33 عصر
برنامه نویسی اصولی که به اینجا ربطی نداره!!
البته من فکر می کنم هر چقدر بیشتر از wizard های VS استفاده بشه درصد اصولی بودن کدها بالاتر میره.
بازم البته این فقط یه نظر شخصیه.


چون فکر نکنم ستاب برای اضافه کردن یک کلیک راست روی فایل x هم گزینه ای داشته باشه یا من ندیدم.
بله حق با شماست و همچین امکانی در VS من هم ندیدم.

موفق باشید
jooje

DarkSoroush
سه شنبه 22 مرداد 1387, 19:06 عصر
البته من فکر می کنم هر چقدر بیشتر از wizard های VS استفاده بشه درصد اصولی بودن کدها بالاتر میره.
بازم البته این فقط یه نظر شخصیه.
اون جمله رو با شما نبودم برمودا جان. حرف شما متینه.