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

Ваш ответ

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

6 Ответы

0 голосов
от
Мне нужно имя текущего пользователя, вошедшего в систему в мое приложение Air/Флекс. Приложения будут развернуты только на машинах Windows. Я думаю, что я мог достигнуть этого путем regexing каталог пользователя, но я открыт для других способов.
0 голосов
от
Есть пару небольших уборок вы можете сделать...
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 ОС Х). Вам не нужно использовать
resolvePath("")
если вы ищете ребенка. Кроме того, что делает функция собственно геттера позволяет связать без какой-либо дальнейшей работы. В приведенном выше примере я положил его в класс
UserUtil
, теперь я могу привязать к
UserUtil.currentOSUser
, электронная.г:
0 голосов
от
Также я хотел бы попробовать:
File.userDirectory.name
Но я не установлен, поэтому я не могу проверить это...
0 голосов
от
Это не самый красивый подход, но если вы знаете, что приложение будет работать в среде 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);
}
0 голосов
от
Вот решение, которое работает в XP / Vista, но, безусловно, расширяемая до OSX, Линукс, я бы продолжил по-другому.
public static function GetCurrentOSUser():String{
    // XP
0 голосов
от
Обновление позднее: есть встроенная функция для получения текущего пользователя. Я думаю, что это В класса nativeapplication.
Добро пожаловать на сайт ByNets, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...