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

(да / нет)

Обновлено: доступ только для чтения в порядке.

Приложение представляет собой фоновый загрузчик, и мне нужен способ получить имя и роль пользователя, которые в настоящее время хранятся только в реестре. Я думаю, что мог бы получить доступ к файлам реестра с доступом только для чтения, но, очевидно, было бы безумием пытаться разобрать (как сказал Джарин). Я решил взять имя пользователя из имени каталога пользователя и написать веб-метод на сервере, чтобы вернуть его роль. C# был творческой идеей, спасибо.

Shawn 22.10.2009 19:20

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

sparkes 06.08.2008 20:50
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
8
2
7 970
8

Ответы 8

Если вы хотите заставить пользователя также установить другое приложение, вы можете написать небольшую службу Windows на C# или C++, которая просто открывает Socket, который предоставляет какой-то протокол для доступа к реестру. Затем в AIR вы можете использовать класс Socket для отправки сообщений в / из службы C#, которая будет возвращать результаты в приложение 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 будет работать в большинстве случаев, но это кажется очень хрупкой реализацией, она полагается на то, что ОС поддерживает соглашение о том, что имя пользователя является их каталогом. Я могу придумать несколько возможных вещей, которые могут его сломать (игра с 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

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

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

Другие вопросы по теме