[WinAPI] СамоКопирование программы

Discussion in 'С/С++, C#, Rust, Swift, Go, Java, Perl, Ruby' started by Jakeroid, 16 Jan 2011.

  1. Jakeroid

    Jakeroid Member

    Joined:
    9 May 2009
    Messages:
    198
    Likes Received:
    12
    Reputations:
    1
    [WinAPI] СамоКопирование программы //РЕШЕНО!

    Пишу на С++.
    Скачал исходник один, что-то он не зработал. А с моим текущим инетом(3-4 кб/с), не могу найти нормально.
    Написал свой, но он тоже не работает.
    Code:
    int CopyMySelf()
    {
        LPTSTR Cdir, Sdir, thisF, thatF, currF;
        if ((GetWindowsDirectory(Sdir, sizeof(Sdir)-1) != 0) && (GetCurrentDirectory(sizeof(Cdir)-1, Cdir) != 0))
        {
            GetModuleFileName(NULL, currF, sizeof(currF)-1);
            thisF = Cdir;
            thisF =+ currF;
            thatF = Sdir;
            thatF =+ currF;
            if (CopyFile(thisF, thatF, FALSE) != 0)
            {
                return 1;
            }
            else
            {
                return 0;
            }
        }
        else
        {
            return -1;
        }
    }
    
     
    #1 Jakeroid, 16 Jan 2011
    Last edited: 17 Jan 2011
  2. Gar|k

    Gar|k Moderator

    Joined:
    20 Mar 2009
    Messages:
    1,166
    Likes Received:
    266
    Reputations:
    82
    O_O ты хоть позырь в отладчике чо у тя в thatF. Юзай wsprintf

    sizeof(currF)-1 = 3
     
    _________________________
  3. Jakeroid

    Jakeroid Member

    Joined:
    9 May 2009
    Messages:
    198
    Likes Received:
    12
    Reputations:
    1
    РЕШЕНО
    Code:
    #include <windows.h>
    
    int CopyMySelf()
    {
        TCHAR thisF[MAX_PATH];
        TCHAR thatF[MAX_PATH];
        if ((GetWindowsDirectory(thatF, sizeof(thatF)) != 0) && (GetModuleFileName(NULL, thisF, sizeof(thisF)) != 0))
        {
            strcat (thatF, "\\fileName.exe");
            MessageBox(NULL, thatF, "Error!", MB_OK);
            if (CopyFile(thisF, thatF, FALSE) != 0)
            {
                return 1;
            }
            else
            {
                return 0;
            }
        }
        else
        {
            return -1;
        }
    }
    
    Другой вопрос! Как это написать на С++?
     
    #3 Jakeroid, 17 Jan 2011
    Last edited: 17 Jan 2011
  4. WNZRS

    WNZRS Member

    Joined:
    3 Sep 2009
    Messages:
    294
    Likes Received:
    52
    Reputations:
    1
    Никак, WINAPI штука сишная