Pergunta

(S/N)

Editar:O acesso somente leitura é adequado.

Nenhuma solução correta

Outras dicas

Ainda não tentei isso, mas acho que encontrei uma solução alternativa.

O Adobe AIR não pode gravar no Registro do Windows, mas você pode iniciar um processo nativo no AIR 2.Aqui está uma postagem no blog que mostra como fazer isso: http://www.adobe.com/devnet/air/flex/quickstart/articles/interacting_with_native_process.html

Agora, no Windows, você pode modificar o registro do Windows com arquivos .reg.Os arquivos .reg são apenas arquivos de texto simples lidos pelo regedit.exe.Então, em teoria, você pode gravar um arquivo .reg no sistema de arquivos e, em seguida, iniciar o regedit.exe com o arquivo .reg passado e... TADA!Você acabou de modificar o registro do Windows em seu aplicativo AIR!

Para ler o valor, você pode usar a função de exportação do regedit para gravar em um arquivo reg e ler a partir do arquivo reg.Detalhes das opções do regedit: http://www.robvanderwoude.com/regedit.php

Aqui estão alguns recursos adicionais:
Sintaxe do arquivo .reg: http://support.microsoft.com/kb/310516
grave no arquivo com o AIR: http://www.adobe.com/devnet/air/flex/articles/exploring_file_capabilities.html

Se você deseja forçar o usuário a instalar também outro aplicativo, você pode escrever um pequeno serviço Windows C # ou C++ que simplesmente abre um Socket que fornece algum tipo de protocolo para acessar o registro.Então, no AIR, você pode usar a classe Socket para enviar mensagens de/para o serviço C# que retornariam resultados para o aplicativo AIR.

Quando o aplicativo for carregado, você pode tentar se conectar ao Socket e, se a conexão for rejeitada, você poderá solicitar ao usuário que baixe/instale o serviço.

Quanto ao acesso direto ao registro, tenho certeza de que a Adobe não permitiria isso no AIR.

Se você puder, eu ficaria horrorizado.

Por que você ficaria horrorizado?Air é uma plataforma de desktop e ter acesso às APIs do sistema operacional (como acesso ao registro) faz muito sentido.

Dito isto, não é suportado agora (e como a Adobe parece ser muito centrada no Mac, duvido que algum dia seja adicionado).

Decidi pegar o nome do usuário do nome do diretório de usuários

Usar File.userDirectory.name funcionará na maioria dos casos, mas parece uma implementação muito frágil, pois depende do sistema operacional manter a convenção de ter o nome de usuário como diretório.Posso pensar em algumas coisas possíveis que podem quebrá-lo (brincar com o TweakUI, etc.).

Você está tentando determinar se o usuário é administrador ou não?

Nesse caso, você pode classificar o nome de usuário com "File.userDirectory.name".

E acho que para descobrir se o usuário é um administrador, você provavelmente poderia tentar acessar um arquivo que requer privilégios de administrador (talvez tente gravar um arquivo no Windows/System32).Se o acesso ao arquivo falhar, você provavelmente poderá assumir que o usuário está em uma conta limitada.

Um pouco tarde, mas um cliente desejou ler alguns valores do registro quando o projeto estivesse quase finalizado.Se houvesse mais desejos desse tipo, eu nunca teria escolhido o AIR.Mas encontrei uma boa extensão do FluorineFx e, ao estendê-la, agora posso ler valores de string e dword do registro.Somente Windows: http://aperture.fluorinefx.com/

Aqui está um exemplo de modificação do Registro do Windows no Adobe Air usando NativeProcess e Python.Assim, você pode adicionar, excluir ou ler chaves com apenas uma única linha de código !!

Download: Modificador de registro Adobe Air no Github

Teoricamente, você poderia modificar os arquivos de registro reais, mas eu desencorajaria fortemente essa ideia.

Tenha muito cuidado se você decidir criar um servidor de soquete que escute comandos de registro.Você está potencialmente criando uma falha de segurança e os firewalls pessoais dos usuários podem atrapalhar em termos de usabilidade.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top