Frage

(J/N)

Bearbeiten:Nur lesender Zugriff ist in Ordnung.

Keine korrekte Lösung

Andere Tipps

Ich habe das noch nicht ausprobiert, aber ich glaube, ich habe einen Workaround gefunden.

Adobe AIR kann nicht in die Windows-Registrierung schreiben, Sie können jedoch einen nativen Prozess in AIR 2 starten.Hier ist ein Blog-Beitrag, der zeigt, wie das geht: http://www.adobe.com/devnet/air/flex/quickstart/articles/interacting_with_native_process.html

Jetzt können Sie unter Windows die Windows-Registrierung mit .reg-Dateien ändern..reg-Dateien sind einfache Textdateien, die von regedit.exe gelesen werden.Theoretisch können Sie also eine .reg-Datei in das Dateisystem schreiben, dann regedit.exe mit der übergebenen .reg-Datei starten und ... TADA!Sie haben gerade die Windows-Registrierung über Ihre AIR-App geändert!

Um den Wert zu lesen, können Sie die Exportfunktion von regedit verwenden, um in eine Reg-Datei zu schreiben und aus der Reg-Datei zu lesen.Details zu den Optionen von regedit: http://www.robvanderwoude.com/regedit.php

Hier sind einige zusätzliche Ressourcen:
Syntax der .reg-Datei: http://support.microsoft.com/kb/310516
Mit AIR in eine Datei schreiben: http://www.adobe.com/devnet/air/flex/articles/exploring_file_capabilities.html

Wenn Sie bereit sind, den Benutzer zu zwingen, auch eine andere Anwendung zu installieren, könnten Sie einen kleinen C#- oder C++-Windows-Dienst schreiben, der einfach einen Socket öffnet, der eine Art Protokoll für den Zugriff auf die Registrierung bereitstellt.Dann können Sie in AIR die Socket-Klasse verwenden, um Nachrichten an/vom C#-Dienst zu senden, die Ergebnisse an die AIR-App zurückgeben würden.

Wenn die App geladen wird, können Sie versuchen, eine Verbindung zum Socket herzustellen. Wenn die Verbindung abgelehnt wird, können Sie den Benutzer auffordern, den Dienst herunterzuladen/zu installieren.

Was den direkten Zugriff auf die Registrierung betrifft, bin ich mir ziemlich sicher, dass Adobe dies von AIR aus nicht zulassen würde.

Wenn du könntest, wäre ich entsetzt.

Warum solltest du entsetzt sein?Air ist eine Desktop-Plattform und der Zugriff auf die APIs des Betriebssystems (z. B. Registrierungszugriff) ist durchaus sinnvoll.

Allerdings wird es derzeit nicht unterstützt (und da Adobe offenbar sehr Mac-zentriert ist, bezweifle ich, dass es jemals hinzugefügt wird).

Ich habe mich dafür entschieden, den Benutzernamen aus dem Namen des Benutzerverzeichnisses zu übernehmen

Die Verwendung von File.userDirectory.name funktioniert in den meisten Fällen, aber es scheint eine sehr fragile Implementierung zu sein, da sie darauf angewiesen ist, dass das Betriebssystem die Konvention einhält, den Benutzernamen als Verzeichnis zu verwenden.Mir fallen ein paar mögliche Dinge ein, die es kaputt machen könnten (Spielen mit TweakUI usw.).

Versuchen Sie festzustellen, ob der Benutzer ein Administrator ist oder nicht?

Wenn ja, können Sie den Benutzernamen mit „File.userDirectory.name“ abstufen.

Und ich denke, um herauszufinden, ob der Benutzer ein Administrator ist, könnten Sie wahrscheinlich versuchen, auf eine Datei zuzugreifen, die Administratorrechte erfordert (versuchen Sie vielleicht, eine Datei in Windows/System32 zu schreiben).Wenn der Dateizugriff fehlschlägt, können Sie wahrscheinlich davon ausgehen, dass der Benutzer über ein eingeschränktes Konto verfügt.

Etwas spät, aber ich bekam von einem Kunden den Wunsch, einige Werte aus der Registry auszulesen, als das Projekt fast fertig war.Gäbe es mehr solcher Wünsche, hätte ich mich nie für AIR entschieden.Aber ich habe eine nette Erweiterung von FluorineFx gefunden, und durch die Erweiterung kann ich jetzt String- und Dword-Werte aus der Registrierung lesen.Nur Windows: http://aperture.fluorinefx.com/

Hier ist ein Beispiel für die Änderung der Windows-Registrierung in Adobe Air mit NativeProcess und Python.Sie können also Schlüssel mit nur einer einzigen Codezeile hinzufügen, löschen oder lesen!!

Herunterladen: Adobe Air-Registrierungsmodifikator auf Github

Theoretisch könnten Sie die eigentlichen Registrierungsdateien ändern, aber ich würde von dieser Idee dringend abraten.

Seien Sie sehr vorsichtig, wenn Sie sich entscheiden, einen Socket-Server zu erstellen, der auf Registrierungsbefehle wartet.Sie schaffen möglicherweise eine Sicherheitslücke und die persönlichen Firewalls der Benutzer können die Benutzerfreundlichkeit beeinträchtigen.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top