Algo parecido me ocurrio a mi con otro programa.
Le estuve dando vueltas, ShellExecute, WinExec, crear bat identico a lo que escribo en MS-DOS y los resultados eran identicos a los tuyo sin explicacion a aparente.
Cuando estaba desesperado y haciendo cosas absurdas se me ocurrio la tonteria de crear un bat, ejecutarlo para que me hiciera el proceso y borrarlo. Pero en el bat no ponia directamente el comando, lo primero que hacia era posicionarme en el lugar donde se encontraba el ejecutable y luego escribia el comando y con esta 'chapucilla' ya me funciono.
Código:
c: \
cd "archivos de programa"
cd uharc
uharc.exe a -d1 -m3 data archivo.exe
Una de las claves que me llevo a pensar que no iba a funcionarme nunca usase el WinExec o cualquier otro tipo de llamada fue que poniendo el comando que escribia directamente en MS-DOs en la ventana de Ejecutar del menu de inicio tampoco funcionaba