هل حاولت كتابةبرنامج .......
برنامج يحذف نفسه!
هل حاولت كتابة برنامج يقوم بحذف نفسه؟
قد تستغرب وما فائدة هكذا برنامج وما غرض برنامج ما من حذف نفسه؟
طبعاً في عالم الحواسيب والبرمجة أغرب الأشياء ممكن أن تكون مفيدة!
مثلاً عندما نثبت برنامجاً فإنه يعطينا الخيار في إزالته (Uninstall) في أية لحظة، ويكون عادة هناك برنامج مختص بحذف كافة ملفات البرنامج وإدخالاته في التسجيل (Registry) وغير ذلك ...
لكن في النهاية وبعد حذف جميع الملفات والإعدادات تكون آخر خطوة عادة هي أن يتم
حذف هذا البرنامج الخاص بإلغاء التثبيت أيضاً فكيف سيقوم هذا البرنامج بحذف نفسه؟!
طبعاً إن حذف ملف ما ليس أمراً صعباً فبمجرد معرفة اسم ومسار الملف المطلوب حذفه نستطيع حذفه عبر أحد استدعاءات توابع النظام (API) وهو DeleteFile أو عبر تابع عالي المستوى توفره مكتبة اللغة المستخدمة، والحصول على اسم ومسار ملف البرنامج (الـ EXE) أيضاً ينطبق عليه نفس الشيء.
وبناءً على الكلام السابق فإنني أستطيع مثلاً جعل برنامجي يحذف نفسه بكتابة التعليمات:
* Visual Basic :
كود:
Dim ExeFileName As String
'We should know if App.Path ends with a trailing "\"
If Right(App.Path, 1) = "\" Then
ExeFileName = App.Path + App.EXEName + ".EXE" 'As in App.Path = "C:\"
Else
ExeFileName = App.Path + "\" + App.EXEName + ".EXE" 'As in App.Path = "C:\MyDir"
End If
Kill ExeFileName
* Delphi :
uses SysUtils, Forms;
.....
DeleteFile(Application.ExeName);
....
* C++ / C :
#include
#include
......
TCHAR szEXEPathname[_MAX_PATH];
GetModuleFileName(NULL, szEXEPathname, _MAX_PATH);
DeleteFile(szEXEPathname);
....
لكن الطرق السابقة لن تعمل! وستعيد الخطأ Access Denied / File Access Error.
السلام عليكم ورحمة الله وبركاته
شكرا لك اخي الكريم
بارك الله فيك
تقبل تحياتي
ينقل من قسم الملفات الدفعية إلى قسم الشروحات و التعليم