我们可以从Adobe Air访问Windows注册表吗?
(是/否)
编辑:只读访问就可以了。
解决方案
回答
如果我们愿意强迫用户也安装另一个应用程序,则可以编写一个小的Cor C ++ Windows服务,该服务只是打开一个套接字,该套接字提供了用于访问注册表的某种协议。然后,在AIR中,我们可以使用Socket类向Cservice发送消息或者从Cservice发送消息,这些消息会将结果返回到AIR应用程序。
应用加载后,我们可以尝试连接到Socket,如果连接被拒绝,则可以提示用户下载/安装服务。
至于直接访问注册表,我可以肯定Adobe不允许AIR这样做。
回答
从理论上讲,我们可以修改实际的注册表文件,但是我强烈建议不要这样做。
回答
我们是否要确定用户是否是管理员?
如果是这样,我们可以使用" File.userDirectory.name"对用户名进行分级。
我想弄清楚用户是否是管理员,我们可能可以尝试访问需要管理员特权的文件(也许尝试将文件写入Windows / System32)。如果文件访问失败,我们可能会认为该用户使用的是受限帐户。
回答
如果决定创建一个侦听注册表命令的套接字服务器,请格外小心。我们可能会创建一个安全漏洞,并且用户的个人防火墙可能会妨碍可用性。
回答
If you can I'd be horrified.
你为什么要惊恐?
Air是一个桌面平台,可以访问操作系统的API(例如注册表访问)是很有意义的。
话虽如此,它现在不被支持(而且Adobe似乎非常以Mac为中心,所以我怀疑它是否会被添加)。
I have settled on grabbing the users name from the name of the user directory
在大多数情况下,使用File.userDirectory.name可以使用,但似乎实现起来非常脆弱,它依赖于OS维护以用户名作为目录的惯例。我可以想到一些可能会破坏它的东西(使用TweakUI等)。
回答
有点晚了,但是当项目快完成时,我希望客户从注册表中读取一些值。如果有更多这样的愿望,我将永远不会选择AIR。但是我从FluorineFx找到了一个不错的扩展,并且通过扩展它,现在可以从注册表中读取字符串和dword值。仅Windows:http://aperture.fluorinefx.com/