I would suggest using SQL Server Compact which is a lightweight, file based version of a database.
Your users do not have to have SQL Server installed to use this option.
This would be my preferred option as it allows you to use LINQ to work with and query the data in the file very easily using technologies such as Entity Framework. In fact you can use POCO's to represent your application entities and Entity Framework will take care of reading and writing the information to the database.
If you are using Entity Framework you can automate the creation of the database using the configuration file. The first time you use any entities the database file will be generated automatically for you (this can be configured).
<configuration>
<connectionStrings>
<add name="DatabaseContext"
providerName="System.Data.SqlServerCe.4.0"
connectionString="Data Source=C:\Paths\To\Location\DBName.abc"/>
</connectionStrings>
</configuration>
I would suggest using one of the special folders on the system to make this transparent to the user of your application.
Also notice that you can have whatever extension you want (DBName.abc instead of DBName.sdf) so that the file can be associated with your application.
Using this method also has the advantage that you do not have to load your entire file into memory in one go (I.E. you can query the data and return a subset of the data) which you would not be able to do if you simply serialised your object to a file.