I'm writing an application that will be used to generate reports from a database and I want to have several predefined reports/queries built in but also offer the user the option to create their own query and be able to save it and run it whenever they want without having to set the query up again each time.

So I figured I would just store the query parameters in an XML file for the ones that a user has created themselves and I would store these XML files (one for each query) in the user's Application Data folder.

I'm wondering what I should do with the built in queries though (bear in mind that the parameters of these built in queries should not be configurable). As I see it, these are my options:

1. Have the query parameters hard coded in the application
2. Store the query parameters in XML files in the location where the app is stored (ie Program Files) - the installer would create these files when the app is installed
3. Store the query parameters in XML files in the user's Application Data folder with any queries they have created themselves.

I'm leaning towards option 2 for the following reasons: All queries (user defined or predefined) would then be in the exact same format and the program could then run them all in the exact same way. Option 1 would mean I would have to release a new version of the application if I ever wanted to change these parameters. Option 3 would mean that the program would have to create the XML files each time it was launched by a new user so it would be a bit pointless and the values for the parameters would still have to be hard coded in the application so that it could create the files correctly.

What do you guys think?

Cheers
Chris