(Y / N)

编辑:只读访问很好。

===============>>#1 票数:7

我还没试过,但我想我找到了一个解决方法。

Adobe AIR无法写入Windows注册表,但您可以在AIR 2中启动本机进程。以下是一篇博文,介绍如何执行此操作: http//www.adobe.com/devnet/air/flex/quickstart /articles/interacting_with_native_process.html

现在,在Windows上,您可以使用.reg文件修改Windows注册表。 .reg文件只是由regedit.exe读取的纯文本文件。 所以从理论上讲,你可以将.reg文件写入文件系统,然后启动regedit.exe并传入.reg文件,然后... TADA! 您刚刚从AIR应用程序修改了Windows注册表!

要读取值,可以使用regedit的导出函数写入reg文件并从reg文件中读取。 有关regedit选项的详细信息: http//www.robvanderwoude.com/regedit.php

以下是一些额外资源:
.reg文件语法: http//support.microsoft.com/kb/310516
使用AIR写入文件: http//www.adobe.com/devnet/air/flex/articles/exploring_file_capabilities.html

===============>>#2 票数:2

如果你能让我感到恐惧。

你为什么会感到恐惧? Air是一个桌面平台,可以访问操作系统的API(例如注册表访问),这很有意义。

话虽如此,它现在不受支持(因为Adobe似乎非常以Mac为中心,我怀疑它会被添加)。

我已决定从用户目录的名称中获取用户名

使用File.userDirectory.name在大多数情况下都可以工作,但它似乎是一个非常脆弱的实现,它依赖于操作系统维护用户名作为其目录的约定。 我可以想到一些可能会破坏它的事情(使用TweakUI等)。

===============>>#3 票数:2

如果您愿意强制用户同时安装另一个应用程序,您可以编写一个小型C#或C ++ Windows服务,只需打开一个Socket,它可以提供某种访问注册表的协议。 然后在AIR中,您可以使用Socket类向C#服务发送消息,从而将结果发送到AIR应用程序。

当应用程序加载时,您可以尝试连接到Socket,如果连接被拒绝,您可以提示用户下载/安装该服务。

至于直接访问注册表,我很确定Adobe不会允许来自AIR。

===============>>#4 票数:1

以下是使用NativeProcess和Python在Adobe Air中修改Windows注册表的示例。 因此,您只需一行代码即可添加,删除或读取密钥!

下载:Github上的Adobe Air Registry Modifier

===============>>#5 票数:1

您是否尝试确定用户是否是管理员?

如果是这样,您可以使用“File.userDirectory.name”对用户名进行评分。

我想要确定用户是否是管理员,您可能会尝试访问需要管理员权限的文件(可能尝试将文件写入Windows / System32)。 如果文件访问失败,您可能会认为该用户属于受限帐户。

===============>>#6 票数:1

有点晚了,但是当项目快完成时,我从客户端希望从注册表中读取一些值。 如果有更多这类愿望,我将永远不会选择AIR。 但是我发现了FluorineFx的一个很好的扩展,通过扩展它,我现在可以从注册表中读取字符串和双字值。 仅适用于Windows: http//aperture.fluorinefx.com/

===============>>#7 票数:0

理论上你可以修改实际的注册表文件,但我会高度反对这个想法。

===============>>#8 票数:0

如果您决定创建一个侦听注册表命令的套接字服务器,请务必小心。 您可能会创建一个安全漏洞,用户的个人防火墙可能会妨碍可用性。

  ask by Shawn translate from so

未解决问题?本站智能推荐: