Se o atual usuário conectado OS em Adobe Air

votos
16

Preciso do nome do atual usuário conectado no meu aplicativo Air / Flex. O pedido só será implantado em máquinas Windows. Eu acho que eu poderia atingir este por regexing o diretório do usuário, mas estou aberto a outras maneiras.

Publicado 04/08/2008 em 17:05
fonte usuário
Em outras línguas...                            


5 respostas

votos
10

Há um par de pequenas limpezas que você pode fazer ...

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 Kevin sugeriu, usar File.separatorpara tornar o diretório divisão multi-plataforma (apenas testado em Windows e Mac OS X).

Você não precisa usar resolvePath("")a menos que você está procurando um filho.

Além disso, fazendo a função de um getter adequada permite a ligação sem qualquer outro trabalho.

No exemplo acima eu colocá-lo em uma UserUtilclasse, agora que pode ligar-se a UserUtil.currentOSUser, por exemplo:

<?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>
Respondeu 26/08/2008 em 14:32
fonte usuário

votos
10

Também gostaria de tentar:

File.userDirectory.name

Mas eu não tenho Air instalado, então não posso realmente testar essa ...

Respondeu 04/08/2008 em 17:39
fonte usuário

votos
5

Esta não é a abordagem mais bonita, mas se você sabe que seu aplicativo AIR só será executado em um ambiente Windows, ele funciona bem o suficiente:

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);
}
Respondeu 17/02/2011 em 04:48
fonte usuário

votos
2

Aqui está uma solução que funciona no XP / Vista, mas é definitivamente expansível a OSX, Linux, eu ainda estaria interessado em uma outra maneira.

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;
}
Respondeu 04/08/2008 em 17:19
fonte usuário

votos
-1

Atualização de maneira mais tarde: há realmente um construído em função para obter o usuário atual. Eu acho que é em NativeApplication.

Respondeu 06/01/2009 em 18:26
fonte usuário

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