Process32First/Process32Next: Brauche ich QueryFullProcessImageName() ab Vista?



  • MSDN zu GetModuleFileName schrieb:

    The path can have the prefix "\?\", depending on how the module was loaded.

    MSDN zu Naming Files schrieb:

    The Unicode versions of several functions permit a maximum path length of 32,767 characters, composed of components up to 255 characters in length. To specify such a path, use the "\?\" prefix.

    Heißt für mich soviel, als dass du schon 32 KB bereitstellen solltest. Oder du kannst es erst mit MAX_PATH versuchen, und je nach Rückgabewert doch noch auf 32 KB aufstocken.



  • Aber welcher Pfad soll 32tausend Zeichen haben?
    Unter Win7 kann ich auch nur Pfade bis 260 Zeichen anlegen (Inklusive X:\ und Null-Terminierung).



  • Du hast mit den 32000 Zeichen angefangen. Ansonsten lies mal Deinen Link, dort steht alles Wissenswerte zu Pfaden mit bis zu 32000 Zeichen drin.



  • Fragö schrieb:

    Unter Win7 kann ich auch nur Pfade bis 260 Zeichen anlegen (Inklusive X:\ und Null-Terminierung).

    Mit "\?\C:\..." gehts unter Vista. Ich bekomme die Ordner gerade nur nicht mehr gelöscht, insgesamt sinds aber >6000 Zeichen und der Explorer weigert sich sogar, bis zum Ende durchzunavigieren, Kommandozeile auch..



  • Badestrand schrieb:

    Ich bekomme die Ordner gerade nur nicht mehr gelöscht, insgesamt sinds aber >6000 Zeichen und der Explorer weigert sich sogar, bis zum Ende durchzunavigieren, Kommandozeile auch..

    Der SpeedCommander sollte das schaffen.



  • sri schrieb:

    Der SpeedCommander sollte das schaffen.

    Hat funktioniert, Danke 🙂



  • Aber wenn man jetzt manuell im Explorer zB. nach C:\ geht und dort anfängt, Ordner anzulegen, ist bei 259 chars Schluss.

    😕



  • Für den Explorer und die Shell ist bei 260 Zeichen Schluss. Steht aber auch wieder (etwas verklausuliert) in Deinem Link:

    To sort out some of this, the following items are different examples of Win32 namespace prefixing and conventions, and summarizes how they are used. Note that these examples are intended for use with the Win32 API functions and do not all necessarily work with Windows shell applications such as Windows Explorer.



  • Ich kapier's nicht.
    Könnte zB. ein Spiel in einem Pfad mit mehr als 260 Zeichen installiert sein?



  • Sagen wir's mal so: Es ist sehr, sehr unwahrscheinlich, dass du auf Pfade triffst, wo MAX_PATH nicht ausreicht. Jeder Softwarehersteller wird wohl die damit auftretenden Probleme umgehen wollen.
    Ich würde so einen Fall ruhigen Gewissens mit "GetModuleFileName ist fehlgeschlagen" gleichsetzen.



  • 260 Zeichen kann man auch unwissend überschreiten. Wenn z.B. das letzte Verzeichnis einer tiefen Struktur (200 Zeichen) freigegeben wird und auf dem anderen Rechner wiederum eine tiefere Struktur angelegt wird, dann kann der erste Rechner (auf dem die Daten ja lokal liegen) nicht mehr auf die gesamte Struktur zugreifen.


Anmelden zum Antworten