PDA

View Full Version : سوال: مشکل در ایجاد یک فایل در یک مسیر مشخص در برنامه



samira2008
چهارشنبه 18 دی 1387, 16:49 عصر
سلام دوستان
من در برنامه ای که می نویسم احتیاج دارم که یک فایل در فولدر windows/system32 ایجاد کنم این کار رو با استفاده از تابع file.createtext انجام میدم اما اگر سیستم ویروس َAutorun داشته باشه این فایل رو نمی سازه در واقع نمی تونه به این مسیر بره. آیا راهی برای رفع این مشکل وجود داره? یعنی تابعی دیگر؟
***ویرایش شده توسط مدیر***

jaza_sa
پنج شنبه 19 دی 1387, 01:05 صبح
بدست آوردن مسیر مورد نظر :

System.Environment.GetFolderPath(Environment.Speci alFolder.System)
برای ایجاد فایل :

using (System.IO.StreamWriter sw = System.IO.File.CreateText(path))
{
sw.Write("This is a sample");
}

samira2008
پنج شنبه 19 دی 1387, 09:13 صبح
من از این روش استفاده کردم اما وقتی کامپیوتر ویروسی باشه این فایل رو ایجاد نمی کنه. چه کار باید انجام بدم؟

RED-C0DE
پنج شنبه 19 دی 1387, 10:35 صبح
من از این روش استفاده کردم اما وقتی کامپیوتر ویروسی باشه این فایل رو ایجاد نمی کنه. چه کار باید انجام بدم؟


یعنی چی این حرفت؟!!!!!
برای چی این کار رو نکنه؟؟؟

SMRAH1
پنج شنبه 19 دی 1387, 11:14 صبح
شاید چون دسترسی User رو از این فایل می گیره ،نمی تونید بسازید!

samira2008
جمعه 20 دی 1387, 22:55 عصر
یعنی چی این حرفت؟!!!!!
برای چی این کار رو نکنه؟؟؟

ببینید وقتی که کامپیوترم ویروس Autorun داره و Antivirus م اونو ار بین میبره روی درایو هام که دابل کلیک می کنم پنجره ی Open With باز میشه. این از این .حالا وقتی هم که این برنامه رو اجرا می کنم روی دستور ایجاد فایل error میده که قادر نیست که این فایل رو ایجاد کنه. امید وارم که دقیق گفته باشم مشکلم چیه؟

samira2008
جمعه 20 دی 1387, 22:56 عصر
شاید چون دسترسی User رو از این فایل می گیره ،نمی تونید بسازید!

اینی که گفتید یعنی چه ؟؟؟؟ :بامزه::خجالت::کف::متفکر:

jaza_sa
شنبه 21 دی 1387, 01:09 صبح
برای اینکه مطمئن بشید که میتونید یک فایل بسازید یا نه ، بهتره در یک مسیر معمولی اینکار رو امتحان کنید.
مثلا در مسیر C:\Program Files یا در دسکتاپ و ... یک فایل بسازید
اگر موفق شدید یعنی اینکه دسترسی لازم رو به مسیر System32 ندارید
اگر موفق نشدید یعنی اینکه مشکل از جای دیگس و بهتره کدتون رو بزارید تا دوستان بررسی کنند

mehdi.mousavi
یک شنبه 22 دی 1387, 11:46 صبح
من از این روش استفاده کردم اما وقتی کامپیوتر ویروسی باشه این فایل رو ایجاد نمی کنه. چه کار باید انجام بدم؟

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

"اگر برق رفت"، "اگر ویروسی بود"، "اگر فلان کلید رجیستری بخاطر بد سکتور هارد خونده نشد" و ... شرایطی هستن که شما در اون نقشی ندارید ولی کد شما باید برای این شرایط آمادگی نشون داده عکس العمل مناسب داشته باشه. Try/Catch رو واسه همین گذاشتن، که به هر دلیلی، اعم از ویروسی بودن سیستم، وجود ایرادهای فیزیکی، عدم داشتن دسترسی لازم به یک Resource و ... وقتی Resource ای در دسترس نبود، شما مطلع بشید و بتونید رفتار مقتضی از خودتون نشون بدید.

در واقع میخوام بگم، پاسخ سوال شما در خود سوال نهفته هستش: کافیه به کاربر پیام بدید که "فایل مورد نظر ایجاد نشد!" و سپس جزییات بیشتری رو در Event Log ذخیره و کل کاری که انجام میدادید رو Rollback کنید. اینکه فایل به چه دلیلی ایجاد نشده، مساله شما نیست. البته دقت کنید، که این وظیفه شماست که حتی الامکان پیام واضحی به کاربر بدید تا اونو در حل مشکل یاری کنه. بهمین دلیل هستش که کلاسهای زیر ایجاد شدن:


DirectoryNotFoundException
EndOfStreamException
FileNotFoundException
FileLoadException
PathTooLongException و ...

در واقع، نباید به IOException بسنده کنید، چون این خیلی کلی هستش و کاربر رو مطلقا راهنمایی نخواهد کرد.