I don't know you exact scenario, but I think you have mainly two options depending that your exact needs.
If what you need for your application is to open a new window and have a module load views, regions, etc, into it, you might find useful the
RegionPopupBehaviors used in the Stock Trader RI sample. The following thread deal with
Showing a view in a region vs a modal dialog
If what you need for your application is to open a completely new application, you can use the approach you are suggesting. I used your code to reproduce your scenario (without the
p.StartInfo.Arguments = query;
and was able launched another instance of the application. To keep things decoupled I created a LoadApplication service that executes your code and called the service when a button is clicked.
Hope it helps!