我正在为桌面运行一个Air App,来自已部署在机器中的实际安装的可执行文件(不是来自Flash Pro / Flex开发环境)。由于某种原因,应用程序不会读取存储在同一应用程序文件夹中的文本文件,除非我从操作系统以管理员身份运行我的应用程序
当我以管理员身份运行应用程序时,或者在开发环境中运行应用程序时,它运行正常也许这与某些安全问题有关?我阅读了adobe air文档,这应该有用......
我在用户上使用openAsync / readUTFBytes,如下所示:
var continueGamesConnection:FileStream();
var continueFile:File = new File(File.applicationDirectory.resolvePath("continueGames.txt").nativePath.toString());
continueGamesConnection.addEventListener(Event.COMPLETE, openSavedGames);
continueGamesConnection.openAsync(continueFile, FileMode.UPDATE);
function openSavedGames(event:Event):void
{
continueGamesConnection.removeEventListener(Event.COMPLETE, openSavedGames);
var content:URLVariables = new URLVariables();
var loadedContent:String = new String();
loadedContent = continueGamesConnection.readUTFBytes(continueGamesConnection.bytesAvailable);
content.decode(loadedContent);
variableX = content. variableX
//etc, etc.
continueGamesConnection.close();
}
顺便说一句,我也尝试过使用FileMode.READ和其他人,它仍然给我同样的问题。仅在管理员模式或开发时运行时才有效。环境。
这非常令人沮丧,我试着阅读其他帖子而没有任何运气......人们使用什么解决方案来解决这类问题?
我已经看到你可以设置应用程序以某种方式作为管理员运行,我想这可行。但是,这应该可以正常工作,因为它似乎没有违反Air的任何安全API。看起来像是一种矫枉过正。但即便如此,我该怎么做?
非常感谢您的帮助!
答案 0 :(得分:1)
通常出于安全原因,应用程序没有File.applicationDirectory
的写入权限。
建议您使用File.applicationStorageDirectory
,因为这是保存用户数据的最佳位置(例如保存游戏文件)。
或者,您也可以让用户浏览到FileReference
类的目录,该目录可能有也可能没有权限。
答案 1 :(得分:0)
假设您使用的是Windows SO,那么您遇到的问题是文件夹C:\ Program Files和C:\ Program Files(x86)的用户访问限制,您无法从Flash或AIR执行任何操作解决这个问题。您可以通过右键单击文件夹来修改安全设置,或者只是避免使用app文件夹来存储任何内容