Можете ли вы получить доступ к реестру Windows из Adobe Air?

(да / нет)

Изменить: доступ только для чтения в порядке.

Ответов (8)

Вот пример изменения реестра Windows в Adobe Air с помощью NativeProcess и Python. Таким образом, вы можете добавлять, удалять или читать ключи всего одной строкой кода !!

Скачать: модификатор реестра Adobe Air на Github

Теоретически вы можете изменить фактические файлы реестра, но я бы категорически не одобрял эту идею.

Если вы хотите заставить пользователя также установить другое приложение, вы можете написать небольшую службу Windows на C# или C++, которая просто открывает Socket, который предоставляет какой-то протокол для доступа к реестру. Затем в AIR вы можете использовать класс Socket для отправки сообщений в / из службы C#, которая будет возвращать результаты в приложение AIR.

Когда приложение загружается, вы можете попытаться подключиться к Socket, и если соединение будет отклонено, вы можете предложить пользователю загрузить / установить службу.

Что касается прямого доступа к реестру, я почти уверен, что Adobe не разрешит этого из AIR.

Вы пытаетесь определить, является пользователь администратором или нет?

В таком случае вы можете присвоить имя пользователя "File.userDirectory.name".

И я думаю, чтобы выяснить, является ли пользователь администратором, вы, вероятно, можете попытаться получить доступ к файлу, который требует прав администратора (возможно, попробуйте записать файл в Windows / System32). Если доступ к файлу не удается, вы, вероятно, можете предположить, что пользователь находится под учетной записью с ограниченным доступом.

Будьте очень осторожны, если решите создать сервер сокетов, который прослушивает команды реестра. Вы потенциально создаете брешь в безопасности, и персональные брандмауэры пользователей могут мешать удобству использования.

Если можно, я был бы в ужасе.

С чего бы вам ужаснуться? Air - это платформа для настольных компьютеров, и доступ к API-интерфейсам ОС (например, доступ к реестру) имеет много смысла.

При этом он не поддерживается сейчас (и, поскольку Adobe, похоже, очень ориентирована на Mac, я сомневаюсь, что он когда-либо будет добавлен).

Я решил взять имя пользователя из имени каталога пользователя.

Использование File.userDirectory.name будет работать в большинстве случаев, но это кажется очень хрупкой реализацией, поскольку ОС поддерживает соглашение о том, что имя пользователя является их каталогом. Я могу придумать несколько возможных вещей, которые могут его сломать (игра с TweakUI и т. Д.).

Немного поздно, но я получил от клиента желание прочитать некоторые значения из реестра, когда проект был почти завершен. Если бы таких желаний было больше, я бы никогда не выбрал AIR. Но я нашел хорошее расширение от FluorineFx, и, расширив его, я теперь могу читать строковые и двойные слова из реестра. Только для Windows: http://aperture.fluorinefx.com/

Я еще не пробовал, но думаю, что нашел обходной путь.

Adobe AIR не может выполнять запись в реестр Windows, но вы можете запустить собственный процесс в AIR 2. Вот сообщение в блоге, в котором показано, как это сделать: http://www.adobe.com/devnet/air/flex/quickstart /articles/interacting_with_native_process.html

Теперь в Windows вы можете изменять реестр Windows с помощью файлов .reg. Файлы .reg - это просто текстовые файлы, которые читает regedit.exe. Так что теоретически вы можете записать файл .reg в файловую систему, затем запустить regedit.exe с переданным файлом .reg и ... TADA! Вы только что изменили реестр Windows из своего приложения AIR!

Чтобы прочитать значение, вы можете использовать функцию экспорта 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