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 -> O diretório home do usuário. No caso do Windows, a pasta do usuário dentro do Documents and Settings
user.dir -> 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!!!