Anwendung auf Client starten

Hallo,

ich würde gerne folgendes realisieren:

Eine Website lädt ein Java-Applet:

Bsp:

Den Parameter „cmd“ erzeuge ich dynamisch mit PHP aus einer MySQL DB.

Der Code des Applets selbst sieht so aus:

import java.applet.*;
import java.awt.*;
import java.io.IOException;

public class MyApplet extends Applet {

String cmd=getParameter(„cmd“);
public void init() {
setBackground(Color.WHITE);
}

public void start() {
try {
openCMD();
} catch (IOException e) {}
}

public void stop() {
}

public void paint(Graphics g) {
g.drawString(„Applet Started“, 10, 10);
}

public void openCMD() throws IOException {
System.out.println(„opening cmd…“);
Runtime.getRuntime().exec(cmd);
}
}

Nun möchte ich, dass das Applet eine Datei ausführt, die ich zuvor über den param „cmd“ referenziert habe. Irgendwie klappt das nicht, obwohl ich „risikohalber“ in der java.policy folgende Einstellung gesezt habe:

permission java.io.FilePermission „>“, „execute“;

Bin für Hilfe dankbar.

P.S. es geht um ein Intranet, in dem Softwareinstallationen über den Webbrowser realisiert werden sollen.

Grüße

peeayoo

Ich bin mir jetzt nicht ganz sicher, aber IMO reicht es nicht aus, die Rechte in der Policy zu spezifzieren, sondern du musst dir das Recht extra noch vor dem Aufruf holen mittels AccessController.

Teste mal sowas wie das hier:

Permission fp = new FilePermission(cmd,"execute");
AccessController.doPrivileged(new PrivilegedAction() {
 public Object run() {
 Runtime.getRuntime().exec(cmd); 
 }
 });

Andererseits:
Es wäre IMO sowieso vernünftiger, dass du das Applet signierst und die auf dieser Basis dann die Rechte holst. Denn eine Execute-Erlaubnis für alle Applets halte ich nicht für so sinnvoll :wink:

Geht einfacher

P.S. es geht um ein Intranet, in dem Softwareinstallationen
über den Webbrowser realisiert werden sollen.

Hallo peeayoo,

wenn es nur das ist, so geht das mit HTA-Dateien und ein wenig schnell gelerntem VBScript leichter als mit Java: http://msdn.microsoft.com/library/default.asp?url=/w…

Vor einiger Zeit habe ich auch versucht, Applets zu schreiben, die auf den PC zugreifen, mit Signieren und allem drum und dran. Es war zwar erfolgreich, aber der Aufwand lässt fragen, ob sich das lohnt. Die Ära der Java-Applets ist vorbei. Java würde ich nur noch für Serveraufgaben und echte Desktopapplikationen nutzen, aber auch in letzterem Fall nur, wenn Programm und dazugehörige Dateien ohnehin so groß sind, dass das JRE-Volumen kaum auffällt.

Viele Grüße,

Mohamed.

Hi Mohamed,

zunächst mal, hab Dank für deine Antwort. Ich hab mein Vorhaben mittels VBScript und HTA realisieren können. No Problem. Was mich allerdings ein wenig stört, ist die Tatsache, dass HTA Files nur vom IE interpretiert werden. Eine Lösung für Firefox wird es wohl aus Plattform- und Sicherheitsgründen nicht geben nehme ich mal an. Wäre schön gewesen, allerdings, wenns nicht klappt, dann kann mal nichts machen.

Danke nochmal.

Grüße

Adam

Stimmt

Hi peeayoo,

stimmt, mit Firefox ist bei HTAs wenig zu holen. Vielleicht ist es aber im Intranet einfacher, die Nutzer an einen bestimmten Browser zu binden.

Oder es programmiert mal jemand ein Firefox-Plugin, das HTAs ebenso bequem wie im IE öffnet.

Schöne Grüße,

Mohamed.

okay lassen wir mal den Firefox außen vor.

Jetzt stecke ich schon wieder in der Bredouille. Folgendes hta habe ich gebastelt:

AppLauncher
<!–
sParameters = oMyApp.commandline
function DocOpen(string1)
Set WshShell = CreateObject(„WScript.Shell“)
WshShell.Exec(string1)
end function

//–>

alert("commandLine = " + hta.commandLine);

Auf dem Webserver verwaltet die MySQL DB die jeweiligen EXE Files, die die Installation initiieren. Diese würde ich dann gerne dynamisch an das HTA übergeben, damit es weiss, welche EXE ich vom Client aus starten möchte. Das Problem hierbei ist, dass ich mittels commandLine über http keine Parameter an das HTA übergeben kann.

Verstehe ich das nun richtig, dass ich zu jeder Software, die ich in die DB aufnehme eine eigene HTA generieren muss, die der Benutzer danach via IE auf seinen Rechner downloaden muss?

So langsam wirds unübersichtlich…oder hast du eine bessere Idee?

Grüße

Adam

okay lassen wir mal den Firefox außen vor.

Hallo peeayoo,

gute Idee, denn es gibt (zumindest weltweit betrachtet) mehr Leute mit IE als mit Java-RE…

Auf dem Webserver verwaltet die MySQL DB die jeweiligen EXE
Files, die die Installation initiieren. Diese würde ich dann
gerne dynamisch an das HTA übergeben, damit es weiss, welche
EXE ich vom Client aus starten möchte.

Ich vermute, dass auch bei reiner Java-Nutzung ein Java-Applet alleine nicht für diese Ausgabe ausreichen würde, sondern wenigstens noch ein Servlet zum Auslesen der DB existieren muss. Das Servlet kannst Du ja nach wie vor in Java machen.

Wie man Parameter an das HTA übergibt, da wüsste ich mindestens einen Weg, den ich bisher allerdings nur mit normalen HTML-Dateien ausprobiert habe: Servlet in verstecktem/sichtbaren iFrame aufrufen, darin Ergebnis ausgeben lassen und das Ergebnis per JavaScrit/VBScript auslesen.

Andere Möglichkeit: Du lässt das Servlet die HTA-Datei dynamisch generieren, wie Du vermutlich schon angedacht hattest.

Vielleicht weiß jemand anders mehr (aber aus einem der anderen Foren, da dies ja jetzt nicht mehr Java ist).

Viele Grüße,

Mohamed.

ich bleibe jetzt beim IE (würg)

habe jetzt eine Lösung entwickelt (vielleicht ist es auch Pfusch, aber im Intranet ein auf jeden Fall vernachlässigbares Sicherheitsrisiko).

Ich lasse mir jetzt mittels PHP zu jeder Software dynamisch ein HTA generieren, in dem die Software Zuordnung passt. Somit bekomme ich ein Haufen HTAs, die sich in der Syntax nur in einem String unterscheiden, aber was solls. Die Zeit ist knapp und ich kann mich nicht innerhalb von zwei Wochen (Diplomarbeit) auch noch in Servlets einlesen :smile: Vielleicht kann ich das irgendwann noch mal vertiefen, aber zur Zeit erfüllt „der Pfusch“ seinen Zweck und gut is.

Danke dir auf jeden Fall. Du hast meinen Arsch aus der Schusslinie geholt. *Prost*. :smile:

Grüße

Adam

PHP ist genau richtig

Ich lasse mir jetzt mittels PHP zu jeder Software dynamisch
ein HTA generieren,

Hallo peeayoo,

Bestens! PHP hätte ich Dir sogar fast vorschlagen, wusste aber nicht, in wiefern das Neuland für Dich ist. Immerhin hatte ich gerade erst VBScript ins Spiel gebracht, und dann noch eine Sprache zum „Nebenbeilernen“ :wink: ?

Schöne Grüße,

Mohamed.