# Cannot run program + Vista



## :-( (27. Jun 2008)

Hallo,

ich arbeite gerade an einem Updater für mein kleines Progrämmchen. Leider will das nicht so recht funktioniert, jedenfalls unter Vista, wie ich das gerne hätte. Und zwar möchte ich das dieser Updater im Hintergrund von meiner Hauptanwendung gestartet wird.
Dabei kommt es zur folgende Fehlermeldung, wobei es egal ist in welchem Ordner ich die Datei ausführen lasse:

java.io.IOException: Cannot run program "D:\Update.exe": CreateProcess error=740, Der angeforderte Vorgang erfordert erhöhte Rechte

Befehl in meiner Hauptanwendung zum start:


```
Process p = Runtime.getRuntime().exec("D:\\Update.exe");
```

Hast einer eine Idee?[/code]


----------



## :-( (27. Jun 2008)

sorry hätte erst im forum schauen sollen, habs mit 

Process p = Runtime.getRuntime().exec("cmd /c" + "D:\\Update.exe");

hinbekommen


----------



## Partheeus (16. Sep 2008)

Sorry wenn ich den alten Thread hier wieder rauskrame aber ich bin am verzeifeln und die Suche ergab leider nichts brauchbares. :-(

Ich habe auch VISTA und habe über diese Methode:


```
public static void shellExecute(String filename) {
		String[] cmd = new String[3];
		cmd[0] = "rundll32.exe";
		cmd[1] = "shell32.dll,ShellExec_RunDLL";
		cmd[2] = "\""+filename+"\"";
		try {
			Runtime.getRuntime().exec(cmd);
		} catch (IOException ex) {
			errorBox(null,filename+"\n konnte nicht geöffnet werden.");
		}
	}
```

immer meine Programme *SOWIE Internetlinks* starten / öffnen können.
Lokale Programme lassen sich nun unter VISTA auch weiterhin öffnen, nur meine Links öffnen sich nicht mehr...

Das funktioniert leider auch nicht :-/

```
Runtime.getRuntime().exec("cmd /c" + "D:\\Update.exe");
```

Jemand einen Lösungsansatz für mich?!?!?! *bitte bitte?!

LG Ulf


----------



## thE_29 (17. Sep 2008)

Tjo, es wird ne Exception geworfen oder?

Vista (wenn du das Programm nicht als Admin startest) blockiert dir glaube ich den Zugriff auf gewisse exen!

Lass dir die Exception mal komplett ausgeben!


----------



## Partheeus (17. Sep 2008)

Hallo, habs gestern im debugmode laufen gehabt, aber eine Exception wurde nicht geworfen. Die Schwierigkeit besteht ja auch nicht bei exe-Dateien, sondern bei ganz normalen Internetlinks (www.java-forum.org) Im Debug-Mode von Eclipse wurde keine Exception geschmissen, er hätte es (lt. Eclipse) ausführen sollen.

Aber tolle Idee mit dem AdminRecht! Werd das mal als Admin ausführen. Habe erst seit einer Woche VISTA, muss mich erst noch drangewöhenen ;-)

Werds heute abend mal als Admin probieren... Vielen Dank schonmal für die Anregung ;-)


----------



## Partheeus (17. Sep 2008)

MIST....auch als ADMIN keine Exception und kein Link geht auf :-(

Mag es machmal an der Syntax liegen?:


```
String[] cmd = new String[3];
      cmd[0] = "rundll32.exe";
      cmd[1] = "shell32.dll,ShellExec_RunDLL";
      cmd[2] = "\""+filename+"\"";
```

Ist ja VISTA 64, vielleicht haut es deswegen nicht hin???
Weiß da net so recht bescheid, ob Internetlinks anders angesprochen werden müssen???


----------



## Illuvatar (17. Sep 2008)

Also der Befehl macht bei mir unter Vista64 auch von der Eingabeaufforderung nix, also würde ich mal vermuten, der Befehl muss anders lauten...

Kannst du Java 6 verwenden? Da geht sowas nämlich eh einfacher, über die java.awt.Desktop-Klasse.


----------



## Partheeus (17. Sep 2008)

Oh...achja?! Benutzte bei mir Java JDK 1.6.0_07....
Von  java.awt.Desktop-Klasse hab ich schonmal was gehört....hab es aber eher in Sachen drucken etc in Erinnerung...

Schau ich mir gleich mal an... Danke schonmal ;-)


----------



## Partheeus (17. Sep 2008)

WOW soooo einfach :-D


```
Desktop.getDesktop().browse( new URI(filename) );
```

Kurze frage zur Syntax hätt ich aber noch...., da ich am "filename" nicht unterscheiden kann ob es eine URL oder ein Programm ist hab ichs erstmal so gelöst, sieht aber nicht wirklich schön aus, oder?!:


```
try {
			Desktop.getDesktop().browse( new URI(filename) );
		} catch (IOException e) {
			errorBox(null, e.getMessage());
		} catch (URISyntaxException e) {
			try {
				Desktop.getDesktop().open( new File(filename) );
			} catch (Exception e1) {
				errorBox(null, e1.getMessage());
			}
		}
```

Kann man soetwas besser schreiben?


----------

