Question

(o/N)

Modifier:L'accès en lecture seule est très bien.

Pas de solution correcte

Autres conseils

Je n'ai pas encore essayé, mais je pense avoir trouvé une solution de contournement.

Adobe AIR ne peut pas écrire dans le registre Windows, mais vous pouvez toutefois lancer un processus natif dans AIR 2.Voici un article de blog qui montre comment procéder : http://www.adobe.com/devnet/air/flex/quickstart/articles/interacting_with_native_process.html

Désormais, sous Windows, vous pouvez modifier le registre Windows avec des fichiers .reg.Les fichiers .reg ne sont que des fichiers texte brut lus par regedit.exe.Donc, en théorie, vous pouvez écrire un fichier .reg dans le système de fichiers, puis lancer regedit.exe avec le fichier .reg transmis et... TADA !Vous venez de modifier le registre Windows depuis votre application AIR !

Pour lire la valeur, vous pouvez utiliser la fonction d'exportation de regedit pour écrire dans un fichier reg et lire à partir du fichier reg.Détails des options de regedit : http://www.robvanderwoude.com/regedit.php

Voici quelques ressources supplémentaires :
Syntaxe du fichier .reg : http://support.microsoft.com/kb/310516
écrire dans un fichier avec AIR : http://www.adobe.com/devnet/air/flex/articles/exploring_file_capabilities.html

Si vous souhaitez forcer l'utilisateur à installer également une autre application, vous pouvez écrire un petit service Windows C# ou C++ qui ouvre simplement un Socket qui fournit une sorte de protocole pour accéder au registre.Ensuite, dans AIR, vous pouvez utiliser la classe Socket pour envoyer des messages vers/depuis le service C# qui renverraient les résultats à l'application AIR.

Lorsque l'application se charge, vous pouvez essayer de vous connecter au Socket, et si la connexion est rejetée, vous pouvez inviter l'utilisateur à télécharger/installer le service.

En ce qui concerne l'accès direct au registre, je suis presque sûr qu'Adobe ne l'autoriserait pas depuis AIR.

Si vous le pouvez, je serais horrifié.

Pourquoi seriez-vous horrifié ?Air est une plate-forme de bureau et avoir accès aux API du système d'exploitation (telles que l'accès au registre) est tout à fait logique.

Cela étant dit, il n'est pas pris en charge pour le moment (et comme Adobe semble être très centré sur Mac, je doute qu'il soit un jour ajouté).

J'ai décidé de récupérer le nom de l'utilisateur à partir du nom du répertoire utilisateur

L'utilisation de File.userDirectory.name fonctionnera dans la plupart des cas, mais cela semble être une implémentation très fragile, elle repose sur le système d'exploitation maintenant la convention selon laquelle le nom d'utilisateur est son répertoire.Je peux penser à quelques choses possibles qui pourraient le casser (jouer avec TweakUI, etc.).

Essayez-vous de déterminer si l'utilisateur est un administrateur ou non ?

Si tel est le cas, vous pouvez noter le nom d'utilisateur avec "File.userDirectory.name".

Et je pense que pour savoir si l'utilisateur est un administrateur, vous pourriez probablement essayer d'accéder à un fichier qui nécessite des privilèges d'administrateur (essayez peut-être d'écrire un fichier sur Windows/System32).Si l'accès au fichier échoue, vous pouvez probablement supposer que l'utilisateur dispose d'un compte limité.

Un peu tard, mais j'ai reçu le souhait d'un client de lire certaines valeurs du registre alors que le projet était presque terminé.S'il y avait eu plus de souhaits de ce type, je n'aurais jamais choisi AIR.Mais j'ai trouvé une extension intéressante chez FluorineFx, et en l'étendant, je peux maintenant lire les valeurs de chaîne et de dword du registre.Windows seulement: http://aperture.fluorinefx.com/

Voici un exemple de modification du registre Windows dans Adobe Air à l'aide de NativeProcess et Python.Vous pouvez donc Ajouter, Supprimer ou Lire des clés avec une seule ligne de code !!

Télécharger: Modificateur de registre Adobe Air sur GitHub

Vous pourriez théoriquement modifier les fichiers de registre réels, mais je découragerais fortement cette idée.

Soyez très prudent si vous décidez de créer un serveur socket qui écoute les commandes de registre.Vous créez potentiellement une faille de sécurité et les pare-feu personnels des utilisateurs peuvent gêner la convivialité.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top