Pues a mi ChDir nunca me devuelve nada. No le vuelvo a prestar.
De todas formas App.Path siempre te devuelve la ruta al ejecutable del programa.
A lo que tu te refieres es a CurDir, que si que guarda la ruta donde se está trabajando.
Si no vuelves a la carpeta de trabajo con ChDir es porque la carpeta de trabajo está en otra unidad que no es C:\ o donde haya quedado el commondialog.
Para volver a la carpeta del programa pon esto:
ChDrive Left$(App.Path, 2)
ChDir App.Path
Verás que bien
Saludos