2008-08-06 11 views
7

(s/n)¿Puede acceder al registro de Windows desde Adobe Air?

Editar: El acceso de solo lectura es correcto.

+0

La aplicación es un descargador de fondo, y necesito alguna manera de conseguir el nombre de los usuarios y el papel, que actualmente sólo almacena en el registro. Creo que podría acceder a los archivos de registro con acceso de solo lectura, pero obviamente sería una locura intentar y analizar (como dijo Jarin). Me he decidido por tomar el nombre de los usuarios del nombre del directorio de usuarios y escribir un método web en el servidor para recuperar su rol. El C# fue una idea creativa, gracias. – Shawn

+0

Si puedes, me horrorizaría. – sparkes

Respuesta

2

Si desea obligar al usuario a instalar también otra aplicación, puede escribir un pequeño servicio de Windows C# o C++ que simplemente abra un socket que proporciona algún tipo de protocolo para acceder al registro. Luego, en AIR puede usar la clase Socket para enviar mensajes a/desde el servicio C# que arrojaría los resultados a la aplicación AIR.

Cuando la aplicación se carga puede intentar conectarse al Socket, y si se rechaza la conexión, puede solicitar al usuario que descargue/instale el servicio.

En cuanto al acceso directo al registro, estoy bastante seguro de que Adobe no lo permitiría desde AIR.

0

En teoría, podría modificar los archivos de registro reales, pero desaprobaría esa idea.

1

¿Está tratando de determinar si el usuario es administrador o no?

Si es así, podría obtener el nombre de usuario con "File.userDirectory.name".

Y creo que para averiguar si el usuario es un administrador, probablemente podría intentar acceder a un archivo que requiere privilegios de administrador (tal vez intente escribir un archivo en Windows/System32). Si el acceso al archivo falla, probablemente pueda suponer que el usuario tiene una cuenta limitada.

0

Tenga mucho cuidado si decide crear un servidor de socket que escuche los comandos de registro. Posiblemente esté creando un agujero de seguridad y los firewalls personales de los usuarios pueden interferir en términos de usabilidad.

2

Si puede Estaría horrorizada.

¿Por qué te horrorizarías? Air es una plataforma de escritorio, y tener acceso a las API del sistema operativo (como el acceso al registro) tiene mucho sentido.

Dicho esto, no es compatible ahora (y como Adobe parece estar muy centrado en Mac, dudo que alguna vez se agregue).

he asentado en agarrar el nombre de los usuarios a partir del nombre del directorio de usuario

Usando File.userDirectory.name funcionará en la mayoría de los casos, pero parece que una implementación muy frágil, que se basa en el sistema operativo manteniendo la convención de tener el nombre de usuario como su directorio. Puedo pensar en algunas cosas posibles que podrían romperlo (jugando con TweakUI, etc.).

1

Un poco tarde, pero un cliente me pidió que leyera algunos valores del registro cuando el proyecto estaba casi terminado. Si hubiera más de estos tipos de deseos, nunca hubiera elegido AIRE. Pero encontré una buena extensión de FluorineFx y, al ampliarla, ahora puedo leer los valores de cadena y dword del registro. Sólo Windows: http://aperture.fluorinefx.com/

7

No he intentado esto todavía, pero creo que he encontrado una solución.

Adobe AIR no puede escribir en el Registro de Windows, pero puede, sin embargo, iniciar un proceso nativo en AIR 2.Aquí hay una publicación de blog que muestra cómo hacerlo: http://www.adobe.com/devnet/air/flex/quickstart/articles/interacting_with_native_process.html

Ahora, en Windows, puede modificar el registro de Windows con archivos .reg. Los archivos .reg son simplemente archivos de texto que regedit.exe lee. Entonces, en teoría, puede escribir un archivo .reg en el sistema de archivos, luego, ejecute regedit.exe con el archivo .reg pasado y ... ¡TADA! ¡Acabas de modificar el registro de Windows desde tu aplicación de AIR!

Para leer el valor, puede usar la función de exportación de regedit para escribir en un archivo reg y leer desde el archivo reg. Detalles de las opciones de regedit: http://www.robvanderwoude.com/regedit.php

Estos son algunos recursos adicionales:
sintaxis del archivo .reg: http://support.microsoft.com/kb/310516
escribir en el archivo con el aire: http://www.adobe.com/devnet/air/flex/articles/exploring_file_capabilities.html

1

Este es un ejemplo de modificar el registro de Windows en Adobe Air usando NativeProcess y Python. ¡Así que puede agregar, borrar o leer claves solo con una sola línea de código!

Descargar: Adobe Air Registry Modifier en Github

+0

El enlace está roto. – giorgian

+0

@giorgian link was updated –

+0

https://github.com/yaa110/Adobe-Air-Registry-Modifier –

Cuestiones relacionadas