20

Air/Flexアプリケーションに現在ログインしているユーザーの名前が必要です。アプリケーションは、Windows マシンにのみデプロイされます。ユーザーディレクトリを正規表現することでこれを達成できると思いますが、他の方法も利用できます。

4

5 に答える 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;
        }
    }
}

Kevinが提案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>
于 2008-08-26T13:32:08.387 に答える
9

また、私は試してみます:

File.userDirectory.name

しかし、私はAirをインストールしていないので、これを実際にテストすることはできません...

于 2008-08-04T16:39:40.153 に答える
1

これは 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;
}
于 2008-08-04T16:19:45.527 に答える
-1

後で更新する:実際には、現在のユーザーを取得するための組み込み関数があります。私はそれがnativeApplicationにあると思います。

于 2009-01-06T17:26:17.940 に答える