在Adobe Air中获取当前登录的OS用户
时间:2020-03-05 18:37:34 来源:igfitidea点击:
我需要在Air / Flex应用程序中当前登录用户的名称。该应用程序将仅部署在Windows计算机上。我想我可以通过重新命名User目录来实现这一点,但是可以接受其他方式。
解决方案
回答
这是一个可以在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; }
回答
我也会尝试:
File.userDirectory.name
但是我没有安装Air,所以我不能真正测试一下...
回答
我们可以进行几次小清理...
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>
回答
稍后进行更新:实际上有一个内置函数来获取当前用户。我认为它在nativeApplication中。