Domanda

(sì/no)

Modificare:L'accesso in sola lettura va bene.

Nessuna soluzione corretta

Altri suggerimenti

Non l'ho ancora provato, ma penso di aver trovato una soluzione alternativa.

Adobe AIR non può scrivere nel registro di Windows, ma potete comunque avviare un processo nativo in AIR 2.Ecco un post sul blog che mostra come farlo: http://www.adobe.com/devnet/air/flex/quickstart/articles/interacting_with_native_process.html

Ora, su Windows, puoi modificare il registro di Windows con file .reg.I file .reg sono semplicemente file di testo letti da regedit.exe.Quindi, in teoria, puoi scrivere un file .reg nel file system, quindi avviare regedit.exe con il file .reg passato e... TADA!Hai appena modificato il registro di Windows dalla tua app AIR!

Per leggere il valore, puoi utilizzare la funzione di esportazione di regedit per scrivere su un file reg e leggere dal file reg.Dettagli sulle opzioni di regedit: http://www.robvanderwoude.com/regedit.php

Ecco alcune risorse aggiuntive:
Sintassi del file .reg: http://support.microsoft.com/kb/310516
scrivi su file con AIR: http://www.adobe.com/devnet/air/flex/articles/exploring_file_capabilities.html

Se sei disposto a forzare l'utente a installare anche un'altra applicazione, potresti scrivere un piccolo servizio Windows C# o C++ che apre semplicemente un Socket che fornisce un qualche tipo di protocollo per l'accesso al registro.Quindi in AIR potete utilizzare la classe Socket per inviare messaggi al/dal servizio C# che restituirebbe risultati all'app AIR.

Quando l'app viene caricata puoi provare a connetterti al Socket e, se la connessione viene rifiutata, potresti chiedere all'utente di scaricare/installare il servizio.

Per quanto riguarda l'accesso diretto al registro, sono abbastanza sicuro che Adobe non lo consentirebbe da AIR.

Se potessi, ne rimarrei inorridito.

Perché saresti inorridito?Air è una piattaforma desktop e avere accesso alle API del sistema operativo (come l'accesso al registro) ha molto senso.

Detto questo, al momento non è supportato (e poiché Adobe sembra essere molto incentrato sul Mac, dubito che verrà mai aggiunto).

Ho deciso di prendere il nome dell'utente dal nome della directory dell'utente

L'uso di File.userDirectory.name funzionerà nella maggior parte dei casi, ma sembra un'implementazione molto fragile, si basa sul fatto che il sistema operativo mantenga la convenzione di avere il nome utente come directory.Mi vengono in mente alcune possibili cose che potrebbero romperlo (giocare con TweakUI ecc.).

Stai cercando di determinare se l'utente è un amministratore o no?

In tal caso potresti valutare il nome utente con "File.userDirectory.name".

E penso che per capire se l'utente è un amministratore potresti probabilmente provare ad accedere a un file che richiede privilegi di amministratore (magari prova a scrivere un file su Windows/System32).Se l'accesso al file fallisce, potresti probabilmente supporre che l'utente abbia un account limitato.

Un po' tardi, ma ho ricevuto il desiderio da un cliente di leggere alcuni valori dal registro quando il progetto era quasi finito.Se ci fossero più desideri di questo tipo, non avrei mai scelto AIR.Ma ho trovato una bella estensione da FluorineFx e, estendendola, ora posso leggere i valori di stringa e dword dal registro.Solo Windows: http://aperture.fluorinefx.com/

Ecco un esempio di modifica del registro di Windows in Adobe Air utilizzando NativeProcess e Python.Quindi puoi aggiungere, eliminare o leggere le chiavi con una sola riga di codice!!

Scaricamento: Modificatore del registro di Adobe Air su Github

In teoria potresti modificare i file di registro effettivi, ma scoraggerei vivamente questa idea.

Fai molta attenzione se decidi di creare un server socket in ascolto dei comandi del registro.Stai potenzialmente creando una falla nella sicurezza e i firewall personali degli utenti potrebbero intralciarti in termini di usabilità.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top