Pessoal,
Estou com um desafio do professor e preciso de uma ajuda para bolar a lógica.
O que acontece tem um ambiente Windows com vários usuários criados tirando o Usuário X todos os outros precisam ser removidos. Pesquisando no Regedit vi que os usuários ficam em:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList\
Só que dentro dele há vários entradas e o nome do Usuário fica na variável:
ProfileImagePath
Vou usar esse tutorial como base, para trabalhar com o registro:
http://www.forum-invaders.com.br/vb/archive/index.php/t-6766.html
Mas não faço ideia de como remover todos os usuários menos o usuário X, alguém teria alguma ideia?
Nota 0 para esse professor hein! Como ele dá um exercício que deveria ser de lógica envolvendo interações tão complexas com o sistema operacional?
Mas ao assunto: Essa chave do registry armazena os Profiles de usuários, quer dizer, relaciona cada usuário que se locou na máquina com seu diretório pessoal (O antigo “Documents and Settings”, que nas versões mais novas do Windows virou “Users”). Remover essa entrada não significa remover de fato o usuário, provavelmente vai acontecer uma dessas duas coisas: ou no próximo login o sistema vai criar um novo diretório pessoal para ele, ou o usuário vai ficar registrado na máquina mas vai tomar erro na hora de logar.
O ideal seria pesquisar por funções na API do Windows que façam essas tarefas de administração de usuários (no seu caso, listar e remover)
Eu acredito que essas sirvam, dê uma olhada na documentação e faça alguns testes, mas eu nunca utilizei:
NetUserEnum - Lista Usuários: http://msdn.microsoft.com/en-us/library/aa370652(v=vs.85).aspx
NetUserDel - Deleta um Usuário: http://msdn.microsoft.com/en-us/library/aa370651(v=vs.85).aspx
A lógica em si é simples: (1) Obter a lista de usuários (2) Navegar pela lista, verificando a cada registro se esse é o Usuário X (3) Se não for ele, chame a função de remoção.
E atenção: [color=red]cuidado para não deletar usuários do sistema![/color]