windows - WinRar exit kode anden adfærd i SP2/SP3 og 7

Indlæg af Hanne Mølgaard Plasc

Problem



Jeg er ny til Windows programmering og har skrevet et lille værktøj med Mingw, som vil unrar en pakke. Koden er som angivet nedenfor


descrition:


Når nedenstående program køres, er resultaterne som følger


XPSP2 32 bit og Windows 7



  • Untar Operation: Succes

  • CreateProcess Return Code: Non Zero (Succes)

  • exitkode: 0 (succes)



XP2SP3 32 bit



  • Untar Operation: Succes

  • CreateProcess Return Code: Non Zero (Succes)

  • Afslut kode: 3221225477






Problemeregler


Jeg er ikke sikker på, hvorfor i XP2SP3-patch, giver winRar-operationen exitkode som en stor positiv værdi. Kan du finde noget problem i nedenstående kode? Hjælp venligst i denne henseende.





int main()
{
    string ProgramName = "C:\Program Files\WinRAR\WinRAR.exe";   
    STARTUPINFO StartupInfo;
    PROCESS\_INFORMATION ProcessInfo;

        memset(&StartupInfo, 0, sizeof(STARTUPINFO));
    memset(&ProcessInfo, 0, sizeof(PROCESS\_INFORMATION)

    if (CreateProcess((LPCTSTR)ProgramName.c\_str(),(LPCTSTR)"WinRAR.exe x -y -ibck d:\abc.tar d:\"),NULL,
    NULL,
    FALSE,
    NORMAL\_PRIORITY\_CLASS,
    NULL,
    NULL,
    &StartupInfo,
    &ProcessInfo) == 0)
    {
        string tmpStr("Error executing");
        tmpStr += ProgramName;
        cout<<"StmtDesigner"<<tmpStr<<"CreateProcess failed"<<endl;
    }
    else
    {
        string tmpStr("Succes executing");
        tmpStr += ProgramName;
        cout<<"StmtDesigner"<<tmpStr<<"CreateProcess Success"<<endl;



            WaitForSingleObject(ProcessInfo.hProcess, INFINITE);
            DWORD exitCode=0;
            if (GetExitCodeProcess(ProcessInfo.hProcess, &exitCode))
            {
            string tmpStr("GetExitCodeProcess");
            tmpStr += ProgramName;
            cout<<tmpStr<<"WinRAR.exe x -y -ibc<<endl;
            }
    }

    CloseHandle(ProcessInfo.hProcess);
    CloseHandle(ProcessInfo.hThread);

    getch();
    return 0;
}





PS: WinRar 3,8 version trail Mode bruges til ovenstående test.

Bedste reference


Det store positive tal, i hexadecimalt, er 0xC0000005. Det er en almindelig Windows-fejl, som betyder 'Access Violation'. Hvorfor præcis får du det, afhænger virkelig af, hvad Winrar forsøger at gøre, men problemet kan være med adgangsrettigheder til filer. Jeg foreslår at du prøver det med ProcMon ser på dit programs filaktivitet. Hvis adgang til en af ​​filerne nægtes, vil du se den i logfilen. [2]