(是/否)

编辑:只读访问就可以了。

没有正确的解决方案

其他提示

我还没有尝试过,但我想我已经找到了解决方法。

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 文件写入文件系统,然后使用传入的 .reg 文件启动 regedit.exe,然后...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_capability.html

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

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

至于直接访问注册表,我很确定 Adob​​e 不会允许从 AIR 进行这种操作。

如果可以的话我会感到害怕。

为什么你会感到害怕?Air 是一个桌面平台,访问操作系统的 API(例如注册表访问)非常有意义。

话虽如此,它现在不受支持(而且由于 Adob​​e 似乎非常以 Mac 为中心,我怀疑它是否会被添加)。

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

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

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

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

我认为要弄清楚用户是否是管理员,您可能可以尝试访问需要管理员权限的文件(也许尝试将文件写入 Windows/System32)。如果文件访问失败,您可能会假设用户使用的是受限帐户。

有点晚了,但是当项目即将完成时,我收到了客户的愿望,希望从注册表中读取一些值。如果有更多这样的愿望,我就不会选择AIR。但我从 FluorineFx 中找到了一个很好的扩展,通过扩展它,我现在可以从注册表中读取字符串和双字值。仅限 Windows: http://aperture.fluinefx.com/

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

下载: Adobe Air 注册表修改器 在 Github 上

理论上您可以修改实际的注册表文件,但我强烈反对这种想法。

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

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top