你能从Adobe Air访问Windows注册表吗?

(Y / N)

编辑:只读访问是好的。

0
额外 编辑
意见: 1
该应用程序是一个后台下载程序,我需要一些获取用户名和角色的方式,目前只存储在注册表中。我想我可以通过只读访问来访问注册表文件,但显然它会尝试解析(如Jarin所说)。我已经决定从用户目录的名称中获取用户名,并在服务器上编写Web方法以恢复其角色。 C#是一个有创意的想法,谢谢。
额外 作者 Shawn,
如果你能我会感到震惊。
额外 作者 sparkes,

6 答案

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

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

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

0
额外

你是否试图确定用户是否是管理员?

如果是这样,你可以通过“File.userDirectory.name”来修改用户名。

我想弄清楚用户是不是管理员,你可能试着访问一个需要管理员权限的文件(也许尝试写一个文件到Windows / System32)。如果文件访问失败,则可以假定该用户位于有限帐户下。

0
额外

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

0
额外

我还没有尝试过,但我认为我找到了解决方法。

Adobe AIR cannot write to Windows Registry, but you can, however, launch a native process in AIR 2. Here's a blog post that shows how to do that: http://www.adobe.com/devnet/air/flex/quickstart/articles/interacting_with_native_process.html

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

To read value, you can use regedit's export function to write to a reg file and read from the reg file. Details to regedit's options: http://www.robvanderwoude.com/regedit.php

Here are some additional resources:
.reg file syntax: http://support.microsoft.com/kb/310516
write to file with AIR: http://www.adobe.com/devnet/air/flex/articles/exploring_file_capabilities.html

0
额外

如果你能我会感到震惊。

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

这就是说,它现在不被支持(并且由于Adobe似乎非常以Mac为中心,我怀疑它会被添加)。

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

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

0
额外

理论上你可以修改实际的注册表文件,但是我会极力阻止这个想法。

0
额外