Aku butuh nama saat ini login pengguna di Udara saya/Flex aplikasi. Aplikasi ini hanya akan digunakan pada mesin Windows. Saya pikir saya bisa mencapai ini dengan regexing direktori Pengguna, tapi saya terbuka untuk cara-cara lain.
Ada's beberapa kecil pembersihan anda dapat membuat...
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;
}
}
}
Sebagai Kevin menyarankan, menggunakan File.pemisah
untuk membuat direktori membelah cross-platform (hanya diuji pada Windows dan Mac OS X).
Anda don't perlu menggunakan resolvePath("")
kecuali anda'kembali mencari anak.
Juga, membuat fungsi yang tepat pengambil memungkinkan mengikat tanpa ada pekerjaan lebih lanjut.
Dalam contoh di atas saya memasukkannya ke dalam UserUtil
kelas, sekarang saya dapat mengikat UserUtil.currentOSUser
, e.g:
<?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>
Ini isn't tercantik pendekatan, tetapi jika anda tahu anda UDARA aplikasi ini hanya akan berjalan dalam lingkungan Windows bekerja dengan cukup baik:
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);
}
Berikut ini adalah solusi yang bekerja di XP / Vista, tapi pasti diupgrade ke OSX, linux, saya'd masih tertarik dengan cara lain.
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;
}