# SMB-File ausführen



## Guest (4. Feb 2009)

hallo,

ich möchte gern einen SMB-File ausführen ohne das ich diesen erst lokal speichern muss!
Die Gründe warum ich dies nicht lokal speichern will sind einmal die Performance (laden, schreiben, laden) das ich nach dem der Anwender die Datei evtl. verändert hat, die Original-Datei entsprechend akt. werden muss!

Lokale Dateien rufe ich in Java unter Windows mit "rundll32.exe url.dll,FileProtocolHandler Dateipfad" auf!

Leider habe ich keine Lösung wie ich dies mit SMB-Files anstelle!

Hoffe ihr habt einen Lösungsvorschlag, einen Hinweis oder auch evtl. eine andere Idee, wie ich von verschiedenen Systemen aus auf Netzwerkfreigaben mit Benutzername und Passwort in Java drauf zugreifen kann!

Gruß
Max


----------



## max40 (4. Mrz 2009)

Hi,
hat den keiner eine Idee? Wäre schön jemand doch eine Idee hat!


----------



## maki (4. Mrz 2009)

SMB File?

Was soll das sein?

Ich kenne SMB nur als "Server Message Block", ein M$ Protokoll...


----------



## max40 (4. Mrz 2009)

Ich benutze jCIFS um damit per SMB auf Dateien zuzugreifen!
Habe aber keine Lösung wie ich unter Windows die Datei ausführen kann!


----------



## maki (4. Mrz 2009)

Wenn Windows eine Datei welches über SMB erreichbar ist ausführen soll, dann braucht Windows auch die Authentifizierung/Authorisierung für den SMB Share, nicht nur dein Java Programm 

Ansonsten musst du die Datei wohl erst lokal kopieren.


----------



## HoaX (4. Mrz 2009)

Um Dateien "ausführen" zu können müssen die Daten ja auf dem entsprechenden Rechner vorhanden sein. Du wirst ums Zwischenspeichern nicht herum kommen. Allerhöchstens indem du ein virtuelles Dateisystem erstellst ... wieso nimmst du nicht die vom Betriebssystem mitgelieferte SMB-Unterstützung?


----------



## Ebenius (4. Mrz 2009)

max40, Du hast doch oben ein Beispiel, wie Du die lokalen Dateien öffnest. Eigentlich muss doch bei "Dateipfad" nur der richtige UNC-Pfad stehen. Oder nicht? Was passiert, wenn Du's probierst?



HoaX hat gesagt.:


> Um Dateien "ausführen" zu können müssen die Daten ja auf dem entsprechenden Rechner vorhanden sein. Du wirst ums Zwischenspeichern nicht herum kommen.


Wieso denn das? "\\AnotherWindowsHost\C$\MyProgram.exe" kann man ausführen, ohne es kopieren zu müssen. Wir haben früher sogar manchmal die Java-VM von einem Shared Folder gestartet.

Ebenius


----------



## max40 (4. Mrz 2009)

Server, Benutzer und Passwort sind bekannt! Ich kann die Datei auch per Java Programm runterladen und lokal aufrufen, was ich aber nicht will weil ich mich auch dann um das zurückspeichern kümmern müsste! Also wäre es schön wenn ich eine Lösung hätte wie ich das lokal kopieren etc. umgehen kann um z.B. die Word-Datei in Word zu öffnen!


----------



## maki (4. Mrz 2009)

Probier doch mal folgenden Pfad:


```
smb://username:password@server/path/to/file
```
So sollte Windows die Berechtigung bekommen.


----------



## max40 (4. Mrz 2009)

also z.B. 
	
	
	
	





```
rundll32.exe url.dll,FileProtocolHandler \\server\path\to\file
```
  geht, die Datei wird sofort aufgerufen. Grund: Meine Anmeldung ist dort hinterlegt da ich mich heute schon auf dem Server angemeldet habe!


```
rundll32.exe url.dll,FileProtocolHandler smb://benutzer:passwort@server/path/to/file
```
 geht nicht! Es kommt auch keine Fehlermeldung! Und ich bin mir sicher das ich Benutzername und Passwort richtig eingeben habe!

Die beiden Befehle habe ich in der Eingabeaufforderung von Windows XP ausgeführt!


----------



## HoaX (4. Mrz 2009)

Ebenius hat gesagt.:


> max40, Du hast doch oben ein Beispiel, wie Du die lokalen Dateien öffnest. Eigentlich muss doch bei "Dateipfad" nur der richtige UNC-Pfad stehen. Oder nicht? Was passiert, wenn Du's probierst?
> 
> 
> Wieso denn das? "\\AnotherWindowsHost\C$\MyProgram.exe" kann man ausführen, ohne es kopieren zu müssen. Wir haben früher sogar manchmal die Java-VM von einem Shared Folder gestartet.
> ...



Da er jCifs verwendet und solche UNC-Pfade nur unter Windows gehn. Und im nächsten Satz schreib ich ja er kann es mit den Mittels des OS probieren.


----------



## max40 (5. Mrz 2009)

HoaX hat gesagt.:


> Da er jCifs verwendet und solche UNC-Pfade nur unter Windows gehn. Und im nächsten Satz schreib ich ja er kann es mit den Mittels des OS probieren.



Und wie oder was muss ich machen um es mit den Mittel des OS zu probieren außer wie ich es bislang versucht habe?


----------



## HoaX (5. Mrz 2009)

wurde doch schon gesagt: bei Windows gehts per UNC-Pfad


----------



## Ebenius (5. Mrz 2009)

Das obere Deiner Beispiele in diesem Beitrag sollte Benutzername / Passwort abfragen, wenn noch kein Ticket vorhanden ist. Probier's doch mal aus. Wie war das noch im Windows? Ausloggen, neu einloggen reicht? Oder muss man dazu neu starten? 

[off topic] On Linux be root, in Windows reboot! 

Ebenius


----------



## max40 (5. Mrz 2009)

Ebenius hat gesagt.:


> Das obere Deiner Beispiele in diesem Beitrag sollte Benutzername / Passwort abfragen, wenn noch kein Ticket vorhanden ist. Probier's doch mal aus. Wie war das noch im Windows? Ausloggen, neu einloggen reicht? Oder muss man dazu neu starten?
> 
> [off topic] On Linux be root, in Windows reboot!
> 
> Ebenius



Also mit dem rundll .... kommt keine Eingabeaufforderung für Passwort und Benutzer!
Habe es jetzt mal mit 
	
	
	
	





```
start "\\server\freigabe\file\to\dir"
```
 probiert!
Damit kommt auch eine Eingabeaufforderung für Benutzer und Passwort! Muss jetzt nur nochmal gucken wie ich das "start ..." aus Java heraus aufrufen kann!

Dann erstmal DANKE für die Antworten


----------



## max40 (6. Mrz 2009)

Aus Java heraus mit 
	
	
	
	





```
cmd /c start " " "\\Server\freigabe\dir\to\file"
```
 funktioniert es! Die ersten " " sind für den Titel der gesetzt werden muss, da ich den Pfad der evtl. Leerzeichen enthalten kann auch in " " setzen muss. Sonst wird der Pfad als Titel verwendet! 

Gruß und schönes Wochenende 
Max


----------

