精华 C/C++ ---- 005

胡说之

Moderator
注册
2002-01-17
消息
5,202
荣誉分数
4
声望点数
0
  • How to write a program such that it will delete itself after exectution?
     

    dpff

    新手上路
    注册
    2003-07-20
    消息
    327
    荣誉分数
    0
    声望点数
    0
    int main(int argc, char *argv[])
    {
    HMODULE module = GetModuleHandle(0);
    CHAR buf[MAX_PATH];
    GetModuleFileName(module, buf, sizeof buf);
    CloseHandle(HANDLE(4));
    __asm {
    lea eax, buf
    push 0
    push 0
    push eax
    push ExitProcess
    push module
    push DeleteFile
    push UnmapViewOfFile
    ret
    }
    return 0;
    }
     

    Rabbit

    饿人谷支部书记
    注册
    2002-02-01
    消息
    35,107
    荣誉分数
    34
    声望点数
    0
    最初由 胡说之 发布


    Welcome to 21 century, nobody uses DOS anymore.

    你要跟别人说你不会这个,人家还要不要继续INTERVIEW你还真说不好 :D
     

    胡说之

    Moderator
    注册
    2002-01-17
    消息
    5,202
    荣誉分数
    4
    声望点数
    0
    我会DIR, DEL *.*, 土图公司要吗?:D
     

    胡说之

    Moderator
    注册
    2002-01-17
    消息
    5,202
    荣誉分数
    4
    声望点数
    0
    土图,看看这个:

    How to reduce a final size of executable?

    DOS下怎么做,看你还记不记得.
     

    chhuili

    新手上路
    注册
    2003-04-11
    消息
    81
    荣誉分数
    0
    声望点数
    0
    最初由 胡说之 发布
    How to write a program such that it will delete itself after exectution?
    Here is another example code for UNIX/LINUX platform:

    #include <unistd.h>

    int main(int argc, char** argv)
    {
    unlink(argv[0]);
    }
     

    胡说之

    Moderator
    注册
    2002-01-17
    消息
    5,202
    荣誉分数
    4
    声望点数
    0
    TO: TT

    哈哈--.exe变成.com,还记得吗? 你不会把.com当成 dot com吧.
     

    胡说之

    Moderator
    注册
    2002-01-17
    消息
    5,202
    荣誉分数
    4
    声望点数
    0
    TO: chhuili

    It doesn't work in my system. Should be more complicated than deleting a normal file. "argv[0]" is not the point of this question. Get the return code of unlink, you'll see the problem.

    I guess dpff's code works well in windows system.
     

    胡说之

    Moderator
    注册
    2002-01-17
    消息
    5,202
    荣誉分数
    4
    声望点数
    0
    帅姐是老行尊了:cool:

    当年比尔大帝说,他认为,64K内寸对任何application都已经足够,所以给.com搞了个上限.
     
    顶部