Applet : keine Recht für Zugriff auf Clipboard (trotz Zertifikat)

lufon

Mitglied
Guten Abend

Ich habe ein kleines Problem mit meinem Applet.
Das Problem ist, das ich nichts in die Zwischenablage abspeichern kann.

Das Applets nur beschränkt Zugriff auf den Computer haben, ist mir klar, deshalb habe ich das Applet mit einem selbstgemachten Zertifikat ausgestattet.Die Bestätigung für mehr Zugriffsrechte erscheint auch, aber komischerweise kommt eine Exception (access denied).:bahnhof:

der Code-Schnipsel :

Java:
try {
               String copy = getpw + "/" + getusername;
               Toolkit.getDefaultToolkit().getSystemClipboard().setContents(
               new StringSelection(copy), null);
               
               
               }
               catch (Exception e){
                   textpw.setText(e.toString());
               }



Kann mir da jmd. weiterhelfen ?
Der Code hat keine Fehler, im Appletviewer funktionierts.

Gruss
 
Nur so ins Blaue:
kommt die Ex vom Clipboard, oder vom pw, (oder aus der StringSelection, oder Toolkit).
pw klingt halt so, als könnte man das nicht so einfach kopieren.

Teste das mal mit den Einzelwerten.
 
Moin,

wenn es Dir bei der Signatur nur um den Zugriff auf die Zwischenablage geht, dann solltest Du dir die JNLP API mal ansehen. Darüber kannst Du auf die Zwischenablage zugreifen ohne das Dein Applet signiert sein muss! Beim Zugriff wird dann zwar auch beim Nutzer nachgefragt, ob er diesen Zugriff erlauben möchte, aber dieser Dialog ist viel "freundlicher" als der eines selbst signierten Zertifikates.

Grundsätzlich sollte man nur die Zugriffsrechte einholen, die man wirklich benötigt.

Viele Grüße,
Fancy
 
danke schonmal für die antworten 🙂

@VP

The public classes and interfaces in the JNLP API are included in the jnlp.jar file. This JAR file must be included in the classpath when compiling source files that use the JNLP API. For example on Windows:

d.h soviel das der user diese jar-file selbst auch noch in den klassenpfad einfügen muss ?
und läuft das nicht über java web start ?
ehrlich gesagt habe ich jetzt keine lust noch in etwas neues einzusteigen, vorallem wenn mans nicht braucht, eine signierung des applets sollte doch ausreichen.

@AquaBall

hey, ich habs jetzt mal so gemacht :

Java:
//-------------------------------------------
               try {
               cb = Toolkit.getDefaultToolkit().getSystemClipboard();
               }
               catch (Exception e){
                   textpw.setText("Error1");
               }
               //-----------------------------------------------
               try {
               toCopy = "hallo";
               }
               catch (Exception e){
                   textpw.setText("error2");
               }
               //-------------------------------
               try {
                s = new StringSelection(toCopy);
               }
               catch (Exception e){
                   textpw.setText("error3");
               }
               //------------------------------
               try {
               cb.setContents(s,s);
               }
               catch(Exception e){
                 textpw.setText("error4");  
               }
               //--------------------------------

er gibt mir error4 aus, d.h es liegt am zugriff auf das clipboard.
hmm und wie solls jetzt weitergehn ? ich hab ja die rechte, ka warum das nicht geht.

Gruss
 
Allgemein geht es darum, die Hemmschwelle beim Nutzer möglichst niedrig anzusetzen und ihm gleichzeitig eine sichere Verwendung der Anwendung zu ermöglichen. Die Warnmeldung die eine Selbstsignatur hervorruft ist imho schon abschreckend (insbesondere wenn der Nutzer Java 7 verwendet). Wer da auf "Ausführen" klickt, öffnet auch Emails zur Penisvergrößerung (und deren Anhänge).

Die JNLP Api bietet dazu eine sauber Alternative. Das geht sowohl bei Applets als auch bei Webstart Applikationen. Hier ist beschrieben wie Applets mittels JNLP eingebunden werden. Hier gibt es ein Beispiel eines unsignierten Applets, das Dateien lesen und schreiben kann.

Seitens des Nutzers mus dabei nichts Besonderes vorliegen (eben nur Java) die JNLP API wird zur Laufzeit automatisch zur Verfügung gestellt.

(Unabhängig davon ist es hilfreich, wenn Du bei einer Exception immer den kompletten Stacktrace ausgibst. Dann lassen sich Fehler viel schneller finden.)

Viele Grüße,
Fancy
 

Neue Themen


Zurück
Oben