Apanhar username no windows

Boas pessoal,

Gostaria de saber se apartir de de codigo java é possivel apanhar o user name que foi logado no computador.

A minha rede tem 100 computadores que correm windows XP e eu utilizo uma aplicação desktop e necessito que ela me apanhe os dados do utilizador ( Apartir do Active Directory do Windows ), como user logado, nome comleto do user, e-mail , etc.

Agradeço desde ja ajuda !

É possível obter o login name, mas não o user name.

String loginName = System.getProperty("user.name")

No Java, você ainda pode pegar:
user.home -&gt O diretório home do usuário. No caso do Windows, a pasta do usuário dentro do Documents and Settings
user.dir -&gt O diretório de trabalho do usuário.

Eu acesso o AD via LDAP para obter os dados
Veja abaixo codigo de exemplo:

package br.gov.tjrn.arq.auth.activeDirectory;

import java.util.Hashtable;

import javax.naming.Context;
import javax.naming.NamingEnumeration;
import javax.naming.NamingException;
import javax.naming.directory.Attributes;
import javax.naming.directory.SearchControls;
import javax.naming.directory.SearchResult;
import javax.naming.ldap.InitialLdapContext;
import javax.naming.ldap.LdapContext;

public class DadosLoginActiveDirectory{

	public static void main(String[] args) throws NamingException {

		String loginPesquisado = "teste";
		String dominio = "@intranet.tjrn";
		
		// specify the LDAP search filter
		String searchBase = "DC=intranet,DC=tjrn";

		// prepara parametros de conexao ao AD
		Hashtable<String, String> envDC = new Hashtable<String, String>();

		envDC.put(Context.INITIAL_CONTEXT_FACTORY,
				"com.sun.jndi.ldap.LdapCtxFactory");

		// atribui as credenciais de segurança (note: using simple cleartext
		// authentication)
		envDC.put(Context.SECURITY_AUTHENTICATION, "simple");

		// usuario para fazer o bind com o AD
		envDC.put(Context.SECURITY_PRINCIPAL, <usuario+dominio>); 
		envDC.put(Context.SECURITY_CREDENTIALS, <senha>);

		// URL de conexao
		envDC.put(Context.PROVIDER_URL, "ldap://<IP do servidor AD>");

		// We need to chase referrals when retrieving attributes from the DC
		// as the object may be in a different domain
		envDC.put(Context.REFERRAL, "follow");

		// configura os atributos que serão obtidos na forma binária
		envDC.put("java.naming.ldap.attributes.binary",
				"objectGUID objectSid msSFUPassword");

		// libera o LdapContext desta instancia, caso ele já estive atribuído
		LdapContext ldapContext = new InitialLdapContext(envDC, null);

		// Now perform a search against the GC
		// Create the search controls
		SearchControls searchCtls = new SearchControls();

		// Specify the attributes to return
		String[] returnedAtts = { "givenName", "objectGUID", "displayName",
				"distinguishedName", "userPrincipalName", "samAccountName",
				"objectClass", "sn", "unicodePwd", "userPassword",
				"msSFUPassword" };
		searchCtls.setReturningAttributes(returnedAtts);

		// Specify the search scope
		searchCtls.setSearchScope(SearchControls.SUBTREE_SCOPE);

		String searchFilter = "(&(objectClass=user)(userPrincipalName="
				+ (loginPesquisado + dominio) + "))";

		// Search for objects in the GC using the filter
		NamingEnumeration answer = ldapContext.search(searchBase, searchFilter,
				searchCtls);

		if (answer.hasMoreElements()) {

			SearchResult sr = (SearchResult) answer.next();

			// Print out some of the attributes, catch the exception if the
			// attributes have no values
			Attributes attrs = sr.getAttributes();

			// exibe os valores dos atributos retornados junto com seus valores
			NamingEnumeration enumeration = attrs.getIDs();
			while (enumeration.hasMoreElements()) {
				String attrId = (String) enumeration.nextElement();
				System.out.println(attrs.get(attrId));
			}
			System.out.println();

			// obtem o displayName e nocaso dele ser null, pega o givenName
			String userName = "";
			if (attrs.get("displayName") != null) {
				userName = (String) attrs.get("displayName").get();
			} else if (attrs.get("givenName") != null) {
				userName = (String) attrs.get("givenName").get();
			}
			// obtem o distinguishedName e o userPrincipalName
			String distinguishedName = (String) attrs.get("distinguishedName")
					.get();
			String userPrincipalName = (String) attrs.get("userPrincipalName")
					.get();

			System.out.println(userName);
			System.out.println(distinguishedName);
			System.out.println(userPrincipalName);

		}
	}
}

Rapaz… muito legal isso.

A dica foi pros meus favoritos!!!