Das ist nicht so ganz einfach - das SDK erklärt das aber eigentlich recht gut. Kurz und knapp die Verzeichnisse:
Manifest: Hier drin steht die Installationsanleitung manifest.u3i und das Symbol.
Host: Alles aus diesem Verzeichnis wird beim Programmstart auf den PC kopiert, und bei Ende wieder gelöscht
Device: Programmdateien, die auf dem Stick verbleiben, und von dort aus gestartet werden
Data: Datendateien, die auf dem Stick bleiben, und die vom Programm verändert werden
Das Programm muss so angepasst werden, dass es keine Daten auf dem PC speichert, auch nicht in der Registry. Stattdessen müssen die Daten im Datenverzeichnis gespeichert werden. Dieses lässt sich via eine der U3-Umgebungsvariablen finden.
Ausserdem muss man ein Programm schreiben, das beim Auswerfen des Sticks das Hauptprogramm um jeden Preis sofort beendet - auch wenn dieses gerade beschäftigt ist. Bei mir macht das killtcmd.exe.
Das hieße dann, dass beim versehentlichen Herausziehgen des Sticks, während z.B. gerade eine Datei (übers Netz) verschoben wird, es sehr leicht zu Datenverlust kommen kann?
Ja, so ist es. Die U3-Spezifikationen verlangen, dass sich ein Programm sofort beendet, wenn der Stick entfernt wird. TC bricht dann z.B. einen laufenden Kopiervorgang ab. Allerdings sollten dabei keine Daten verloren gehen, da beim Verschieben einer Datei die Quelldatei erst gelöscht wird, wenn die Zieldatei vollständig kopiert wurde.