Obtenez le courant utilisateur connecté OS dans Adobe Air

voix
16

J'ai besoin le nom du courant utilisateur connecté dans mon application Air / Flex. L'application ne sera déployée sur les machines Windows. Je pense que je pouvais atteindre ce par regexing le répertoire utilisateur, mais je suis ouvert à d'autres moyens.

Créé 04/08/2008 à 17:05
source utilisateur
Dans d'autres langues...                            


5 réponses

voix
10

Il y a quelques petites opérations de nettoyage que vous pouvez faire ...

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;
        }
    }
}

Comme Kevin a suggéré, utiliser File.separatorpour faire le partage du répertoire multi-plateforme (juste testé sur Windows et Mac OS X).

Vous n'avez pas besoin d'utiliser à resolvePath("")moins que vous êtes à la recherche d'un enfant.

De plus, ce qui rend la fonction d'un getter approprié permet la liaison sans travail supplémentaire.

Dans l'exemple ci - dessus je l' ai mis dans une UserUtilclasse, maintenant je peux lier à UserUtil.currentOSUser, par exemple:

<?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>
Créé 26/08/2008 à 14:32
source utilisateur

voix
10

Aussi je voudrais essayer:

File.userDirectory.name

Mais je ne testons pas l'air installé, donc je ne peux pas vraiment ça ...

Créé 04/08/2008 à 17:39
source utilisateur

voix
5

Ce n'est pas la plus jolie approche, mais si vous savez que votre application AIR ne sera exécutée que dans un environnement Windows, il fonctionne assez 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);
}
Créé 17/02/2011 à 04:48
source utilisateur

voix
2

Voici une solution qui fonctionne sous XP / Vista, mais est certainement extensible à OSX, Linux, je serais toujours intéressé par une autre façon.

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;
}
Créé 04/08/2008 à 17:19
source utilisateur

voix
-1

chemin de mise à jour plus tard: il est en fait une fonction intégrée pour obtenir l'utilisateur actuel. Je pense qu'il est dans nativeApplication.

Créé 06/01/2009 à 18:26
source utilisateur

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