Validação de usuário logado

Boa tarde,

Estou desenvolvendo uma aplicação C# em Desktop. Nessa aplicação preciso travar o usuário logado no sistema para o mesmo não se logar mais de 1x com o mesmo usuário. Algum de vocês tem uma ideia de como posso fazer para implementar essa funcionalidade ?

Eu pensei em gerar um arquivo com o nome do usuário sempre que ele logar no sistema e deixar esse arquivo com lock até o cara logar (Ou ter algum problema na maquina e a mesma ser reiniciada). Porem os Client’s da minha aplicação podem ser instalados em varias maquinas diferentes, com isso ele pode rodar um client na maquina A e quando ele for se logar num outro client da maquina B o arquivo não vai existir no diretório B.

Pensei também em fazer dando Lock no registro do banco, porem não sei se seria uma opção arriscada. Essa do banco de dados é víavel pois eu posso ter vários client’s instalados em maquinas diferentes, porem esses client’s sempre devem apontar para o mesmo servidor de banco de dados.

Algum de vocês teria uma ideia diferente dessas duas ? Ou alguma sugestão em cima dessas ideias, dizendo se é um bom ou mal caminho. Qualquer ideia é bem vinda para eu verificar a viabilidade de implementar.

Obrigado a todos

Basta que, ao logar, você defina no banco de dados uma flag indicando que ele está logado.

E nessa sua abordagem como vou fazer caso o usuário reinicie a maquina ou a desligue diretamente. Com isso não terei controle de fechamento da minha aplicação e a FLAG continuara como logada.

Você pode pegar alguma propriedade do computador( mac adrress, nome do usuario logado etc.) e salvar no banco também. Ai no banco ficaria com as colunas logado e local_acesso por exemplo. Se ele tentar logar de novo e do mesmo lugar, você libera o acesso.

Lógico que aí daria problema se a máquina do usuario queimasse, por exemplo.