PDA

View Full Version : پاک کردن برنامه بعد از بسته شدن



krasus
جمعه 09 خرداد 1393, 21:57 عصر
سلام
می خوام بدونم چه طور می تونم یه برنامه درست کنم که بعد از بسته شدن پاک بشه؟
برنامه فقط یه فایل exe هست که پرتابل هست و نیازی به نصب نداره. کاربر فایل ۲ مگی exe را دریافت می کند و بعد از اینکه کارش با برنامه تموم شد برنامه رو می بنده و بعدش می خوام برنامه که یه فایل ۲ مگی exe هست پاک بشه. حالا سوال اینجاست که چه طور این کار رو انجام بدم؟:متفکر:

forodo
شنبه 10 خرداد 1393, 00:04 صبح
سلام
به نظر من یه برنامه دیگه درست کنید که داخلش کدهای پاک کردن برنامه وجود داشته باشه.
داخل برنامه اصلی هم هنگامی که برنامه بسته می شه مسیر اجرایی فایل رو داخل فایلی یا چیزی ذخیره کنید و بگید وقتی که برنامه اصلی بسته شد اون یکی برنامه اجرا بشه و مسیر برنامه اصلی رو بهش بدید و با File.Delete() که داخل اون یکی برنامه هستش اون برنامه اصلی رو پاک کنید.

krasus
شنبه 10 خرداد 1393, 00:41 صبح
سلام
به نظر من یه برنامه دیگه درست کنید که داخلش کدهای پاک کردن برنامه وجود داشته باشه.
داخل برنامه اصلی هم هنگامی که برنامه بسته می شه مسیر اجرایی فایل رو داخل فایلی یا چیزی ذخیره کنید و بگید وقتی که برنامه اصلی بسته شد اون یکی برنامه اجرا بشه و مسیر برنامه اصلی رو بهش بدید و با File.Delete() که داخل اون یکی برنامه هستش اون برنامه اصلی رو پاک کنید.

مشکل اینجاست که کاربرای زیادی با این برنامه کار می کنند و سطح امنیتی سیستم هر کاربر متفاوت هست و اگه من بخوام مسیر برنامه ای که باید پاک بشه رو توی یه فایلی ذخیره کنم(یعنی این فایل رو ایجاد کنم بعد توش ذخیره کنم(برنامه من فقط یه فایل exe هست)) برای ایجاد فایل در سیستم بعضی از کاربرها دچار مشکل access denied میشم.

این امکان وجود داره که از طریق cmd.exe یه کد رو در زمانی معین اجرا کنم؟
مثلا بگم کد پاک کردن برنامه رو در ساعت فلان اجرا کن بعد برنامه رو ببند و اون ساعت فلان دقیقا ساعت ویندوز در زمان اجرای کد هست که من یه دقیقه جلوترش رو در نظر می گیرم.
این طوری برنامه بسته میشه در حالی که کد مورد نظر من یه دقیقه دیگه در cmd.exe اجرا میشه.

aliagamon
شنبه 10 خرداد 1393, 09:19 صبح
برای ایجاد وقفه معمولا یه ای پی غلط رو ازش پینگ میگیرن .... مثلا :


ping 1.1.1.1 -n 1 -w N000 > nul

اگه اینو تو اینترنت دیدی فکر نکن کپی کردم چون همه از همین استفاده میکنن کلا یه چیز رایجه :لبخند: اونجا که N گذاشتم شما زمان رو بنویس چون به میلی ثانیه هست دوتا صفر گداشتم جلوش ...
درواقع این کد یه پینگ میگیره بعد یه تایمی منتظر میمونه بعد دوباره پینگ میگیه ... که البته اینجا یه بار بیشتر پینگ نمیگیره ... پس همون زمانی که میخواین وای میسه ...
بعدشم که شما باید فایل رو پاک کنید دیگه ... حالا این کد رو میتونید با سی ام دی یا اجرای یه فایل batch اجرا کنین ....:چشمک:

shahryari
شنبه 10 خرداد 1393, 09:59 صبح
در داخل یک فایل تکست بنویس del myProgram.exe و با پسوند bat در کنار فایل اجرایی ذخیره کن و هنگام بسته شدن برنامه در رویداد فرم کلوزینگ با متد process.start اون فایل پچ رو اجرا کن
نکته:
برنامه ات چون پرتابل ، میتونید در هنگام لود برنامه این فایل پچ رو تولید کنید


کد های تولید فایل در رویداد لود
string mypro = System.IO.Path.GetFileName(Application.ExecutableP ath);
System.IO.File.WriteAllText(Application.StartupPat h + "\\del.bat", "del " + mypro );

کدهای اجرای فایل در فرم کلوزینگ:
System.Diagnostics.Process.Start(Application.Start upPath + "\\del.bat");

krasus
جمعه 16 خرداد 1393, 12:43 عصر
در داخل یک فایل تکست بنویس del myProgram.exe و با پسوند bat در کنار فایل اجرایی ذخیره کن و هنگام بسته شدن برنامه در رویداد فرم کلوزینگ با متد process.start اون فایل پچ رو اجرا کن
نکته:
برنامه ات چون پرتابل ، میتونید در هنگام لود برنامه این فایل پچ رو تولید کنید


کد های تولید فایل در رویداد لود
string mypro = System.IO.Path.GetFileName(Application.ExecutableP ath);
System.IO.File.WriteAllText(Application.StartupPat h + "\\del.bat", "del " + mypro );

کدهای اجرای فایل در فرم کلوزینگ:
System.Diagnostics.Process.Start(Application.Start upPath + "\\del.bat");

این برنامه ما زیر دست حدودا هزار تا کاربر میره که هرکدوم یه سیستم عامل دارند و هر سیستم عامل یه سطح امنیتی داره. از اونجایی که این برنامه فقط یه فایل exe هست پس راه حل هایی که دوستان پیشنهاد دادن نیاز به این داره که یه فایل ایجاد کنیم که ممکنه در بعضی سیستم ها سیستم از نظر امنیتی جلوی ایجاد فایلو بگیره. من یه راه حل پیدا کردم. دو کد رو باهم به cmd.exe می دم. اولی برای ایجاد وقفه تا برنامه زمان کافی برای بسته شدن داشته باشه(با پینگ کردن وقفه ایجاد می کنم.) دومی هم که پاک کردن برنامه هست.

اینم نمونه کد ما :

Process.Start(lastVersionProgramPath);
Process.Start("cmd.exe", "/C ping 5.144.130.39 & Del " + Application.ExecutablePath);
Application.Exit();




امیدوارم برای دوستان مفید باشه.