CreateProcess Kommandozeilelänge



  • Ich lasse vom User eine Kommandozeile eingeben die ich dann mit CreateProcess ausführe. In der MSDN Dokumentation steht das die maximale Länge dieses Strings 32 K Zeichen ist und unter Windows 2000 sogar nur 260 (MAX_PATH) Zeichen.

    Muss ich jetzt noch eine spezielle Überprüfung einbauen wie in etwa:

    if(IsRunningOnWindows2000())
    {
        if(lstrlen(cmdline) > MAX_PATH)
        {
            // zu lang
        }
    }
    else if(lstrlen(cmdline) > 32 * 1024))
    {
        // zu lang
    }
    

    Oder kann ich mir das sparen?



  • Jo, besser ist das 😉 .



  • Wobei - wenn du das an mehreren Stellen brauchst, solltest du die Maximallänge nur einmal je nach System berechnen:

    int max_len = IsRunningOnWindows2000() ? MAX_PATH : 32*1024;
    
    ...
    if(lstrlen(cmdline)>max_len)
    {
      //zu lang
    }
    

Anmelden zum Antworten