# Windows Vista Schreibrechte Problem!



## stEEdZ (22. Oktober 2008)

Hallo allerseits,
ich sitze jetzt schon seit einer ganzen Weile vor einem Problem und bekomm es einfach nicht gebacken... 

Es geht um die Rechteverwaltung unter Vista! :suspekt:

Ich habe ein Jar-File welches via Doppelklick einfach nur Files von /Program Files/OrdnerA zu /Program Files/OrdnerB kopieren soll.
Hier ist auch schon das Problem. Natürlich könnte ich einfach mittels Jar-File Eigenschaften die Rechte auf Vollzugriff setzen, das ganze soll allerdings auch bei anderen Usern laufen ohne dass erst eine Schreibrechtseinstellung vorgenommen werden muss.

Jetzt habe ich schon viel nachgelesen, mich informiert und es gibt folgende Möglichkeiten an den Schreibrechten bei Vista zu drehen:
-  Vistamanifest erstellen, allerdings kann man diese nur zu exe, msi - files etc zuweisen aber nicht zu einem Jar-file
- Jar-File-Starter.exe erstellen und diese dann als Admin ausführen lassen oder s.o. ein Manifest dazu erstellen.

Wie man sieht bekomme ich anscheinend nur mit einer Exe die Schreibrechte die ich benötige. Gibt es denn da keine andere Lösung?
Das schrenkt die Mächtigkeit von Java doch total ein oder nicht? 

mit freundlichen Grüßen
steedz


----------



## joschi70 (22. Oktober 2008)

Hi,

mir ist nur die Lösung mittels Elevate.cmd bekannt.

http://forums.sun.com/thread.jspa?threadID=5240394



> There is a possibility using the scripts provided by the Elevation PowerToys for Windows Vista avaible here:
> http://technet.microsoft.com/en-us/magazine/cc510320.aspx
> 
> Its not really a clean solution, but it works! ()
> ...



Gruß
joschi


----------



## stEEdZ (22. Oktober 2008)

Hallo Joschi,
erstmal vielen Dank für die Antwort! Das scheint wirklich in die richtige Richtung zu gehen.
Hast du damit schonmal gearbeitet oder irgendwie Erfahrung?
Ich hab mir das mal durchgelesen und mag sein dass es auch an der Uhrzeit liegt, aber ich versteh relativ wenig.


----------



## joschi70 (23. Oktober 2008)

Hi stEEdZ,

bin auch nicht so der Vista Experte aber ich versuche es mal.


Zum Ausführen mancher Programme sind mehr Rechte nötig, als der Benutzer standardmäßig besitzt. Das ist immer dann der Fall wenn die UAC (User Account Control) hochpoppt und den Benutzer fragt "Erlauben Ja/Nein". Dadurch wird das Programm "elevated" (emporheben) und bekommt für die Dauer der Ausführung mehr Rechte.

Ich zeigs mal am Beispiel "Datum setzen". Datum setzen geht unter Vista (soweit ich weiss) nur mit Zusatzrechten.
Gibt man auf der Kommandozeile z.B. 
	
	
	



```
cmd /c date 23.10.2007
```
 ein erhält man die Meldung: 





> Dem Client fehlt ein erforderliches Recht.


.

Ruft man das ganze mit der elevate.cmd http://technet.microsoft.com/en-us/magazine/cc510320.aspx auf 
	
	
	



```
elevate.cmd /c date 23.10.2007
```
 erscheint die UAC und die Datumsänderung funktioniert.

Das Gleiche funktioniert auch mit einer Java Applikation.
Ich versuch mal ein Beispiel zu machen.


```
public class Date {
	public static void main(String[] args){
		try {
			Process p = Runtime.getRuntime().exec("cmd /c date 23.10.2007");
			p.waitFor();
			System.out.println("Rueckgabewert: " + p.exitValue());
		}
		catch(Exception e) {
			e.printStackTrace();
		}
	}
}
```

Führt man das Programm ohne Elevation aus 
	
	
	



```
java -cp . Date
```
 bekommt man die Ausgabe: 





> Rueckgabewert: 1


Das ganze hat also nicht funktioniert.

Nun machen wir das ganze mit elevate.cmd und setzen folgenden Aufruf per Kommandozeile ab: 
	
	
	



```
elevate.cmd java -cp %CD% Date
```
 Hier ist darauf zu achten, dass der Klassenpfad voll qualifiziert wird, ansonsten funktioniert das nicht.
Nach dem Aufruf erscheint die UAC und das Datum wird geändert. Es gibt allerdings keine Bildschirmausgabe.

So sollte das auch mit Deinem Programm funktionieren.
Allerdings hat Vista so seine Tücken. Ich drück Dir die Daumen.

Gruß
joschi


----------

