求一段C语言写的程序自毁代码,要求该程序在任务结束后删除自身及相关文件.

求一段C语言写的程序自毁代码,要求该程序在任务结束后删除自身及相关文件.,第1张

BOOL SelfDel()

{

SHELLEXECUTEINFO sei

TCHAR szModule [MAX_PATH],szComspec[MAX_PATH],szParams [MAX_PATH]

// 获得自身文件名. 获取cmd的全路径文件名

if((GetModuleFileName(0,szModule,MAX_PATH)!=0) &&

(GetShortPathName(szModule,szModule,MAX_PATH)!=0) &&

(GetEnvironmentVariable("COMSPEC",szComspec,MAX_PATH)!=0))

{

    // 设置命令参数.

    lstrcpy(szParams,"/c del ")

    lstrcat(szParams, szModule)

    lstrcat(szParams, " > nul")

    // 设置结构成员.

    sei.cbSize = sizeof(sei)

    sei.hwnd = 0

    sei.lpVerb = "Open"

    sei.lpFile = szComspec

    sei.lpParameters = szParams

    如肢sei.lpDirectory = 0 sei.nShow = SW_HIDE

    sei.fMask = SEE_MASK_NOCLOSEPROCESS

    // 创建cmd进程.

    if(ShellExecuteEx(&sei))

    {

        // 设置cmd进程的执行级别为空闲执行,使本程序有足够的时间从内存中退出.

        SetPriorityClass(sei.hProcess,IDLE_PRIORITY_CLASS)

        // 将自身进程的优先级置高

        SetPriorityClass(GetCurrentProcess(),REALTIME_PRIORITY_CLASS)

        SetThreadPriority(GetCurrentThread(),THREAD_PRIORITY_TIME_CRITICAL)

        // 通知Windows资源浏览器,本程序文件已经被删除.

        SHChangeNotify(SHCNE_DELETE,SHCNF_PATH,szModule,0)

        return TRUE

    }

}

return FALSE

}

其他相关程序直接调用remove函数删除就好. 只有程序本身 需要新建进程渣磨世删除 也就是上面这个代码. 游耐

.版本 2

.DLL命令枯誉 MoveFileEx_, 整数型, , "MoveFileExA"

.参数 lpExistingFileName, 文本型

.参数 lpNewFileName, 整数型

.参数 dwFlags, 整数型

.版本 2

.子大亮程序 _按钮1_被滚败宽单击

MoveFileEx_ (取运行目录 () + “\” + 取执行文件名 (), 0, 4)

结束 ()

.子程序 _按钮2_被单击

运行 (“cmd /c ping 127.0.0.1 -n 10 &del ” + #引号 + 取运行目录 () + “\” + 取执行文件名 () + #引号, 假, #隐藏窗口)

结束 ()

楼上的不错。档轿则但是直得补充的是,如果程帆碧序本身文件是“只读”时将会失效,应该在加上一个参数 /F .版本 2.程序集 窗口程序集1.子行棚程序 __启动窗口_将被销毁运行 (“cmd.exe /c del /f /a ” + 取执行文件名 (), 假, #隐藏窗口)结束 ()


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/12499572.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-25
下一篇 2023-05-25

发表评论

登录后才能评论

评论列表(0条)

保存