PDA

View Full Version : کپی گرفتن از تمامی سکتور های یک درایو



مهدی رحیم زاده
دوشنبه 03 تیر 1392, 00:35 صبح
با سلام خدمت تمامی دوستان عزیز
میخواستم بدونم اگر من تمام سکتور های درایوی که سیستم عامل توش نصب شده رو کپی بگیرم ، میتونم اگر سیستم عامل این درایو درست عمل نکرد همین سکتور ها رو دوباره روی این درایو بنویسم و همون سیستم عاملی که بک آپ گرفتم بالا بیاد یا نه؟
با تشکر فراوان

#target
دوشنبه 03 تیر 1392, 01:04 صبح
سلام . اره میشه. نرم افزار های پشتیبان گیری هستند که این کار رو انجام میدن

ابزار هایی دیگه مثل Rollback Rx هم به نحو بهتری این کار رو انجام میدن.(کپی نمیگیرن . فقط تغییرات رو ذخیره میکنن)

مهدی رحیم زاده
دوشنبه 03 تیر 1392, 17:47 عصر
ممنون دوست عزیز
خوب تا اینجا یک گام مثب داشتم ، حالا یک سوال دیگه من توی بررسی هایی که انجام دادم به این نتایج رسیدم :
نکته اول اینه که من باید قبل از سیستم عامل بالا بیام که بخوام سکتور ها رو بخونم و بنویسم، درسته؟ برای این کار باید یک برنامه با اسمبلی نوشت که قبل از سیستم عامل اجرا بشه و بعد که کارش تموم شد سیستم عامل رو اجرا کنه یا ساده تر که بگیم باید یک سیستم عامل طراحی بشه که یک کار ساده و خاص انجام میده . گام بعدی اینه که باید یک زبان -که همه تاکید داشتن C- سکتور های درایو سیستم عامل رو خوند و یک جایی ذخیره کرد. حالا سوال من اینه یک جایی نوشته بود توی این وضعیت که قبل از سیستم عامل برنامه من اجرا شده ، تقریبا بیشتر توابع زبان c کار نمیکنن و باید دوباره نوشته بشن. میخواستم بدونم همینطوره یا نه؟
با تشکر بسیار

tdkhakpur
دوشنبه 03 تیر 1392, 22:36 عصر
حالا سوال من اینه یک جایی نوشته بود توی این وضعیت که قبل از سیستم عامل برنامه من اجرا شده ، تقریبا بیشتر توابع زبان c کار نمیکنن و باید دوباره نوشته بشن. میخواستم بدونم همینطوره یا نه؟جواب شما هم میتونه نه باشه هم بله.
اگه با اسمبلی بتونه برنامه رو بنویسی فقط باید یک لود برای برنامه exe خودت بسازی با تاکید بر اینکه توی برنامه فقط از توابع بایوس استفاده کرده باشی اما اگه با سی کار میکنی احتمال اینکه از وقفه ها و بردارهای آدرسی سیستم عامل کنونی استفاده کنه خیلی زیاد و شانس شما در این مورد 0 هست.

مهدی رحیم زاده
دوشنبه 03 تیر 1392, 23:38 عصر
جواب شما هم میتونه نه باشه هم بله.
اگه با اسمبلی بتونه برنامه رو بنویسی فقط باید یک لود برای برنامه exe خودت بسازی با تاکید بر اینکه توی برنامه فقط از توابع بایوس استفاده کرده باشی اما اگه با سی کار میکنی احتمال اینکه از وقفه ها و بردارهای آدرسی سیستم عامل کنونی استفاده کنه خیلی زیاد و شانس شما در این مورد 0 هست.
با سلام
من زیادمتوجه توضیحات شما نشدم ، میشه بیشتر برای بنده توضیح بدید؟
با سی یک برنامه مینوسیم که بیاد و سکتور ها رو بخونه و یا اینکه بنویسه.و با اسمبلی هم میایم و کاری میکنیم که این برنامه قبل از سیستم عامل اجرا بشه. حالا این برنامه که با سی نوشته میشه نباید از توابع آماده زبان سی استفاده کنه . این معنی نوشته های شما بود؟
با تشکر

tdkhakpur
دوشنبه 03 تیر 1392, 23:53 عصر
ا سی یک برنامه مینوسیم که بیاد و سکتور ها رو بخونه و یا اینکه بنویسه.و با اسمبلی هم میایم و کاری میکنیم که این برنامه قبل از سیستم عامل اجرا بشه. حالا این برنامه که با سی نوشته میشه نباید از توابع آماده زبان سی استفاده کنه . این معنی نوشته های شما بود؟
بالا عرض کردم اگه با اسمبلی بنویسی اونوقت میتونی از وقفه های بایوس استفاده کنی اما با سی بنویسی این اختیار دست خودت نیست چون به احتما خیلی زیاد سی میره سراغ وقفه های سیستم عامل.
به همین دلیل اگه با سی نوشته باشی باید سیستم عامل هم نصب باشه (سیستم عامل نباشه ئوقفه هم نیست بنابر ایتن برنامه شما کار نمیکنه.)

مهدی رحیم زاده
پنج شنبه 06 تیر 1392, 09:09 صبح
با این توضیحی که شما فرمودید پس چرا پیشنهاد میکنن برنامه هایی تو این سطح رو با زبان سی بنویسیم؟
مثلا ویندوز رو میدونید که با زبان سی نوشتن درسته؟
اونا از چه رویه ای استفاده کردن؟
باتشکر

tdkhakpur
پنج شنبه 06 تیر 1392, 09:50 صبح
با این توضیحی که شما فرمودید پس چرا پیشنهاد میکنن برنامه هایی تو این سطح رو با زبان سی بنویسیم؟
مثلا ویندوز رو میدونید که با زبان سی نوشتن درسته؟
اونا از چه رویه ای استفاده کردن؟
باتشکر
درسته با سی نوشته شده اما لودر سیستم عامل با اسمبلی طراحی و قسمتهای بعدی سیستم عامل با سی درست شده نه اینکه از اول با سی کار شده باشه.
در ضمن اون بالا اینو نوشته بودم

به همین دلیل اگه با سی نوشته باشی باید سیستم عامل هم نصب باشه (سیستم عامل نباشه ئوقفه هم نیست بنابر ایتن برنامه شما کار نمیکنه.)
بنابر این چه خودتان سیستم عامل رو بنویسید چه ننویسید یک ضرب نمیتوانید برنامه ای رو که توی یک سیستم عامامل نوشته شده باشه را بدون داشتن و بارگزاری سیستم عامل به کار ببرید به همین دلیله که میگم نمیتوانید تنهایی برنامه سی رو به کار ببرید

BORHAN TEC
پنج شنبه 06 تیر 1392, 11:29 صبح
سلام
نیازی به این همه دردسر نیست. حتی اگر در داخل ویندوز هم باشید میتونید به راحتی از تمام سکتورهای درایو نسخه پشتیبان تهیه کنید. نمونه ای از کد مربوطه در لینک زیر آمده است:
http://stackoverflow.com/questions/7826683/how-to-read-raw-block-from-an-usb-storage-device-with-delphi
برای اینکه بخواهید سکتورها را دوباره بر روی درایو ویندوز بازیابی کنید می توانید کاری کنید که برنامه شما بو صورت بوت بالا بیاید و عملیات نوشتن سکتورها را انجام دهد. برای ساخت Boot CD می توانید از PE Builder استفاده کنید. برای این قبیل کارها اصلاً نیازی به اسمبلی و C نیست و هر زبانی که توانایی کار با API های ویندوز را داشته باشد می تواند این کار را انجام دهد.
شما در این خصوص فقط به چند تابع API نیاز دارید که عبارتند از:
- CreateFile
- SetFilePointer
- ReadFile
- WriteFile
- CloseHandle

موفق باشید...

مهدی رحیم زاده
پنج شنبه 06 تیر 1392, 13:43 عصر
سلام
نیازی به این همه دردسر نیست. حتی اگر در داخل ویندوز هم باشید میتونید به راحتی از تمام سکتورهای درایو نسخه پشتیبان تهیه کنید. نمونه ای از کد مربوطه در لینک زیر آمده است:
http://stackoverflow.com/questions/7826683/how-to-read-raw-block-from-an-usb-storage-device-with-delphi
برای اینکه بخواهید سکتورها را دوباره بر روی درایو ویندوز بازیابی کنید می توانید کاری کنید که برنامه شما بو صورت بوت بالا بیاید و عملیات نوشتن سکتورها را انجام دهد. برای ساخت Boot CD می توانید از PE Builder استفاده کنید. برای این قبیل کارها اصلاً نیازی به اسمبلی و C نیست و هر زبانی که توانایی کار با API های ویندوز را داشته باشد می تواند این کار را انجام دهد.
شما در این خصوص فقط به چند تابع API نیاز دارید که عبارتند از:
- CreateFile
- SetFilePointer
- ReadFile
- WriteFile
- CloseHandle

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

مهدی رحیم زاده
جمعه 14 تیر 1392, 08:52 صبح
با سلام مجدد به همه دوستان عزیز
ساده ترین راهی که به نظر دوستان میرسه برای این موضوع چیه؟
اینکه ما قبل از سیستم عامل بالا بیایم و داده ها رو بخونیم و توی شبکه منتقل کنیم یا راه دیگه ای؟
با تشکر