Получить вошедшего в систему пользователя OS в Adobe Air

голоса
16

Мне нужно имя текущего вошедшего в систему пользователя в моем приложении Air / Flex. Приложение будет развернуто только на машинах Windows. Я думаю, что я мог бы достичь этого, regexing каталога пользователя, но я открыт для других способов.

Задан 04/08/2008 в 17:05
источник пользователем
На других языках...                            


5 ответов

голоса
10

Там есть несколько маленьких уборок вы можете сделать ...

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

Как предложил Кевин, использовать , File.separatorчтобы сделать каталог расщепления кросс-платформенный (только проверено на Windows , и Mac OS X).

Вам не нужно использовать , resolvePath("")если вы ищете для ребенка.

Кроме того, делая функцию надлежащего геттер позволяет связывание без какой-либо дальнейшей работы.

В приведенном выше примере я положил его в UserUtilкласс, теперь я могу связываться UserUtil.currentOSUser, например:

<?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>
Ответил 26/08/2008 в 14:32
источник пользователем

голоса
10

Кроме того, я хотел бы попробовать:

File.userDirectory.name

Но у меня нет воздуха установлен так, что я не могу проверить это ...

Ответил 04/08/2008 в 17:39
источник пользователем

голоса
5

Это не самый красивый подход, но если вы знаете, ваше приложение AIR будет работать только в среде Windows, она работает достаточно хорошо:

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);
}
Ответил 17/02/2011 в 04:48
источник пользователем

голоса
2

Вот решение, которое работает в XP / Vista, но, безусловно, с возможностью расширения до OSX, Linux, я бы до сих пор заинтересованы в другом пути.

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;
}
Ответил 04/08/2008 в 17:19
источник пользователем

голоса
-1

Обновление путь позже: есть на самом деле встроенная функция для получения текущего пользователя. Я думаю, что в NativeApplication.

Ответил 06/01/2009 в 18:26
источник пользователем

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