Melhor maneira de armazenar dados localmente no .net (c #)

Eu estou escrevendo um aplicativo que leva os dados do usuário e armazena-lo localmente para uso posterior. O aplicativo será iniciado e interrompido com bastante frequência e eu gostaria de salvá-lo / carregar os dados no início / fim do aplicativo.

Seria bastante simples se eu usasse arquivos planos, já que os dados realmente não precisam ser protegidos (só serão armazenados neste PC). As opções que acredito são assim:

Arquivos simplesXMLSQL DB

Arquivos planos requerem um pouco mais de esforço para manter (não são construídos em classes como com XML), no entanto eu não usei XML antes, e SQL parece ser um exagero para essa tarefa relativamente fácil.

Existem outros caminhos que valham a pena explorar? Se não, qual destas é a melhor solução?

Edit: Para adicionar um pouco mais de dados para o problema, basicamente, a única coisa que eu gostaria de armazenar é um dicionário que se parece com isso

Dictionary<string, List<Account>> 

onde conta é outro tipo personalizado.

Eu seria serializar o dict como o xmlroot e, em seguida, o tipo de conta como atributos?

Atualização 2:

Então é possível serializar um dicionário. O que torna complicado é que o valor para esse comando seja um genérico em si, que é uma lista de estruturas de dados complexas do tipo Conta. Cada conta é bastante simples, é apenas um monte de propriedades.

No meu entender, o objetivo aqui é tentar acabar com isso:

<Username1>
    <Account1>
        <Data1>data1</Data1>
        <Data2>data2</Data2>
    </Account1>
</Username1>
<Username2>
    <Account1>
        <Data1>data1</Data1>
        <Data2>data2</Data2>
    </Account1>
    <Account2>
        <Data1>data1</Data1>
        <Data2>data2</Data2>
    </Account2>
 </Username2>

Como você pode ver a heirachia é

Nome de usuário (string do dict)>Conta (cada conta na lista)>Dados da conta (ou seja, propriedades de classe).

Obtendo este layout de umDictionary<Username, List<Account>> é o bit complicado e a essência desta questão.

Há muitas respostas 'como' aqui na serialização, o que é minha culpa, uma vez que não deixei claro antes, mas agora estou procurando uma solução definitiva.

questionAnswers(19)

yourAnswerToTheQuestion