Obtenga el usuario actual del sistema operativo conectado en Adobe Air

votos
16

Necesito el nombre del usuario registrado actualmente en mi aplicación Air / Flex. La aplicación solo se implementará en máquinas con Windows. Creo que podría lograr esto actualizando el directorio de usuarios, pero estoy abierto a otras formas.

Publicado el 04/08/2008 a las 17:05
fuente por usuario
En otros idiomas...                            


5 respuestas

votos
10

Hay un par de pequeñas limpiezas que puedes hacer ...

package
{
    import flash.filesystem.File;

    public class UserUtil
    {
        public static function get currentOSUser():String
        {
            var userDir:String = File.userDirectory.nativePath;
            var userName:String = userDir.substr(userDir.lastIndexOf(File.separator) + 1);
            return userName;
        }
    }
}

Como sugirió Kevin, utilícelos File.separatorpara hacer que el directorio se divida multiplataforma (recién probado en Windows y Mac OS X).

No necesita usarlo a resolvePath("")menos que esté buscando un niño.

Además, hacer de la función un getter adecuado permite el enlace sin ningún trabajo adicional.

En el ejemplo anterior lo puse en una UserUtilclase, ahora puedo enlazar UserUtil.currentOSUser, por ejemplo:

<?xml version="1.0" encoding="utf-8"?>
<mx:WindowedApplication xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute">
    <mx:Label text="{UserUtil.currentOSUser}"/> 
</mx:WindowedApplication>
Respondida el 26/08/2008 a las 14:32
fuente por usuario

votos
10

También lo intentaría:

File.userDirectory.name

Pero no tengo Air instalado así que no puedo probar esto ...

Respondida el 04/08/2008 a las 17:39
fuente por usuario

votos
5

Este no es el enfoque más bonita, pero si usted sabe que su aplicación AIR sólo se ejecute en un entorno Windows funciona bastante bien:

public var username:String;

public function getCurrentOSUser():void
{       
   var nativeProcessStartupInfo:NativeProcessStartupInfo = new NativeProcessStartupInfo();  
   var file:File = new File("C:/WINDOWS/system32/whoami.exe");
   nativeProcessStartupInfo.executable = file;

   process = new NativeProcess();       
   process.addEventListener(ProgressEvent.STANDARD_OUTPUT_DATA, onOutputData);
   process.start(nativeProcessStartupInfo);
}

public function onOutputData(event:ProgressEvent):void
{           
   var output:String = process.standardOutput.readUTFBytes(process.standardOutput.bytesAvailable);
   this.username = output.split('\\')[1];
   trace("Got username: ", this.username);
}
Respondida el 17/02/2011 a las 04:48
fuente por usuario

votos
2

Aquí hay una solución que funciona en XP / Vista, pero definitivamente se puede expandir a OSX, Linux, todavía estaría interesado de otra manera.

public static function GetCurrentOSUser():String{
    // XP & Vista only.
    var userDirectory:String = File.userDirectory.resolvePath("").nativePath;
    var startIndex:Number = userDirectory.lastIndexOf("\\") + 1
    var stopIndex:Number = userDirectory.length;
    var user = userDirectory.substring(startIndex, stopIndex);

    return user;
}
Respondida el 04/08/2008 a las 17:19
fuente por usuario

votos
-1

Actualización más tarde: en realidad hay una función incorporada para obtener el usuario actual. Creo que está en nativeApplication.

Respondida el 06/01/2009 a las 18:26
fuente por usuario

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more